Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DSScan(三) #74

Open
PyxYuYu opened this issue Jan 10, 2017 · 0 comments
Open

DSScan(三) #74

PyxYuYu opened this issue Jan 10, 2017 · 0 comments

Comments

@PyxYuYu
Copy link
Owner

PyxYuYu commented Jan 10, 2017

Procrastination is the thief of time.

0x01 DSScan

  • 模板文件 task.html
    • 表格列宽利用 <colgroup> 进行限制
       <colgroup>
           <col style="width:25%">
           <col style="width:10%">
           <col style="width:10%">
           <col style="width:45%">
           <col style="width:10%">
       </colgroup>
    • 最后一列 LOG 利用模态框弹出显示具体内容
      <a href="#" data-toggle="modal" data-target="#myModal">
          <span class="glyphicon glyphicon-arrow-down"></span>
      </a>
      <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
      <div class="modal-dialog">
      <div class="modal-content">
          <div class="modal-header">
              <button data-dismiss="modal" class="close" type="button"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
              <h4 class="modal-title">SCAN LOG</h4>
          </div>
          <div class="modal-body">
              {{ task.scan_log }}
          </div>
          <div class="modal-footer">
              <button data-dismiss="modal" class="btn btn-default" type="button">关闭</button>
          </div>
      </div>
      </div>
      </div>
    • LOG 处显示一个字体图标,利用 <a> 超链接标签来表示可以被点击
  • 模板文件 open.html
    • open.html 这个页面用于导入需要进行扫描的 URL
    • 两种方式导入
      • 利用 txt 文件批量导入
      • 利用 文本框 批量导入
    • 这里会用到表单 Form
      • GETPOST 提交的区别
        • HTTP 请求中,如果没有 request-body,则以 GET 方式发送 HTTP 请求,否则以 POST 发送请求
        • <a> 超链接只能用 GET 提交 HTTP 请求
        • 表单 Form 中的区别
          • GET 方式发送,无需指定 enctype 标签属性, action 标签中如果存在 ? 子句, GET 将会忽略直接传送前面的路径
          • GET 方式提交,每个表单域的 NAMEVALUE 都要进行 URL Encoding 处理(通常由用户端浏览器自动进行)
          • POST 方式发送,表单域中的数据将作为 request-body 提交, action 标签中如果存在 ? 子句,将在 request-line 中进行保留,但是注意 action 中的值必须是已经进行了 URL Encoding 处理,用户端浏览器不会自动处理 URL 中的非法字符
          • HTTP 请求中,request-line 总是以 application/x-www-form-urlencoded 方式编码, enctype 标签属性只对 request-body 起作用,也就是说只有在 method="POST" 的情况下,设置 enctype 才起作用
          • 在没有指定 enctype 标签属性时,表单以默认的 application/x-www-form-urlencoded 方式对 request-body 进行编码,如果表单域中的 NAMEVALUE 含有非法字符,客户端浏览器会自动进行 URL Encoding 处理
          • 如果表单中包含需要上传的文件数据,则在指定 method="POST" 的同时还要指定enctype="multipart/form-data"
          • GET 方式主要获取数据,但是在获取之前也会向服务器提交数据, POST 方式主要提交数据,但是在提交之后服务器也会返回数据
0x02 Drops Wiki

  • 服务配置
    • MSSQL 安全配置
      • 错误配置和利用
        • 使用 旧版本MSSQL
          • 由于 MSSQL 不免费,导致用户使用旧版本,这些旧版本中存在一些公开的漏洞,威胁安全
        • sa 用户弱口令且 MSSQL 端口对外开放
          • MSSQL 默认端口为 1433 端口,当该端口对外开放时,攻击者便可尝试对 MSSQL 的帐号密码进行爆破
          • 若服务器使用常用的用户名(如 administrator)或默认用户名(sa)且密码为弱口令或者默认的空口令则极易被爆破成功
          • 攻击者获取 MSSQL 服务器数据库操作权限后,如果服务器对用户权限没有限制,就容易导致服务器沦陷
          • 启用了 xp_cmdshell 等危险扩展命令
            • MSSQL 中有许多类似 xp_cmdshell 的扩展命令,当攻击者获取 MSSQL 的数据库操作权限时,这些命令可以被利用导致服务器沦陷,因此应尽量禁用这些扩展命令
               Sp_OACreate
               Sp_OADestroy
               Sp_OAGetErrorInfo
               Sp_OAGetProperty
               Sp_OAMethod
               Sp_OASetProperty
               Sp_OAStop
               Xp_regaddmultistring
               Xp_regdeletekey
               Xp_regdeletevalue
               Xp_regenumvalues
               Xp_regremovemultistring
               xp_sdidebug
               xp_availablemedia
               xp_cmdshell
               xp_deletemail
               xp_dirtree
               xp_dropwebtask
               xp_dsninfo
               xp_enumdsn
               xp_enumerrorlogs
               xp_enumgroups
               xp_enumqueuedtasks
               xp_eventlog
               xp_findnextmsg
               xp_fixeddrives
               xp_getfiledetails
               xp_getnetname
               xp_grantlogin
               xp_logevent
               xp_loginconfig
               xp_logininfo
               xp_makewebtask
               xp_msver
               xp_perfend
               xp_perfmonitor
               xp_perfsample
               xp_perfstart
               xp_readerrorlog
               xp_readmail
               xp_revokelogin
               xp_runwebtask
               xp_schedulersignal
               xp_sendmail
               xp_servicecontrol
               xp_snmp_getstate
               xp_snmp_raisetrap
               xp_sprintf
               xp_sqlinventory
               xp_sqlregister
               xp_sqltrace
               xp_sscanf
               xp_startmail
               xp_stopmail
               xp_subdirs
               xp_unc_to_drive
               xp_dirtree
            • 比如使用: xp_cmdshell
               exec xp_cmdshell 'whoami'
      • 修复方案
        • 升级 MSSQL ,或者使用其他的数据库
          • 更改用户弱口令,管理用户权限,删除危险的扩展命令
      • 漏洞扫描及发现
         //扫描
         nmap -n --open -p 1433 X.X.X.X/24
         
         //使用nmap进行暴力破解
         nmap -p1433 --script=ms-sql-brute --script-args=userdb=/var/passwd,passdb=/var/passwd 192.168.5.1
      • 找到开放 1433 端口的服务器后便可以尝试用数据库管理工具进行连接
      • 相关资源
        • MSSQL注射知识库 v1.0Wooyun drops
    • Memcached 安全配置
      • 错误配置及利用
        • Memcached 服务器端都是直接通过客户端连接后直接操作,没有任何验证过程,且 Memcached 默认以 root 权限运行,因而如果 Memcached 服务器直接暴露在互联网上的话比较危险,轻则敏感数据泄漏,重则可导致服务器被入侵
      • 修复方案
        • 限定访问 IP ,使用 iptables 限制,只允许 X.X.X.X 的主机访问
           iptables -F
           iptables -P INPUT DROP
           iptables -A INPUT -p tcp -s X.X.X.X --dport 11211 -j ACCEPT
           iptables -A INPUT -p udp -s X.X.X.X --dport 11211 -j ACCEPT
      • 漏洞扫描及发现
        • 半手动扫描, Memcached 默认端口是 11211
           nmap -n --open -p 11211 X.X.X.X/24
           telnet X.X.X.X 11211
           stats items
           stats # 显示Memcached的运行状态
           version # 显示版本号
           stats items # 列出item
           add key 0 60 5 # 增加一个item名为key,存活时间60s,大小为5字节
           12345 # key的值
           stats cachedump <item: id> <返回结果数量,0代表返回全部> # 查看item信息
           get key # 取得key的值
           delete key # 删除key
    • Mongodb 安全配置
      • 错误配置及利用
        • MongoDB 安装时不添加任何参数,默认不开启权限验证,登录的用户可以对数据库任意操作而且可以远程访问数据库
        • 在刚安装完毕的时候, MongoDB 都默认有一个 admin 数据库,此时 admin 数据库是空的,没有记录权限相关的信息,当 admin.system.users 一个用户都没有时,即使开启了权限验证,如果没有在 admin 数据库中添加用户,此时不进行任何认证还是可以做任何操作,直到 admin.system.users 中添加一个用户
        • 没有权限验证的 MongoDB 可以被 MongoDB 管理工具(如: MongoVUE)远程匿名连接及进行数据库操作
        • MongoDBWeb 界面存在漏洞,导致开启了 Web 界面的 MongoDB 容易受到攻击,详见 Attacking MongoDBWooyun drops
      • 修复方案
        • 添加用户认证
          • MongoDB 3.0 以上的版本较以往版本做了一些调整,如
            • 在安装完成后 show dbs 时,只可以看到一个 local数据库,而 admin 是不存在的,需要我们自己创建
            • db.addUser(...) 方法不在使用,添加用户需要使用 db.createUser(...) 方法等
            • MongoDB 3.0 以上版本:
               use admin # 进入admin数据库
               db.createUser(
                   {
              	     user: "root",
              		 pwd: "test",
              		 roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
              	 }
               ) # 添加用户名root,密码test的用户,若数据库未创建则会自动创建
            • 注: rolesdb 参数是必须的,不然会报错
               Error: couldn't add user: Missing expected field "db".
            • 这时,我们就可以通过 show usersdb.system.users.find() 命令看到刚才创建的用户
            • 然后添加 -auth 参数(开启用户权限)重启 MongoDB
               use admin # 进入admin数据库
               db.auth("root", 'test') # 认证,成功返回1
            • 注意:这里的 root 帐号只有用户管理权限
            • 为数据库设置账户密码,例如下面给 test 数据库添加一个有读写权限的帐号
               use test # 进入test数据库
               db.createUser(
                   {
              	     user: "test",
              		 pwd: "123456",
              		 roles: [{ role: "readWrite", db:"test" }]
              	 }
               ) # 添加用户名test,密码123456帐号,若数据库未创建则会自动创建
        • 限制连接 IP
          • 在启动时,可以通过添加 -bind_ip 参数来绑定 IP
             ./mongod --bind_ip 127.0.0.1 # 只能从本机访问
      • 漏洞扫描与发现
        • 半手动扫描,使用 nmap 扫描 MongoDB 默认的服务端口(27017)或者默认的 Web 端口(28017),找到开放端口的主机后使用管理工具进行连接
           nmap -n --open -p 27017 X.X.X.X/24
0x03 Life

  • 向先知提交了第一个众测漏洞,通过了,给了中危,在新年活动最后一波结束前赶上了,黑客淘公仔 GET(女儿又多了套玩具)
  • 收到补天短消息,要给前100的白帽送福袋,快半年没提交,不过好在也没掉几名,福袋 GET
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant