9/24/2018

Ruby IDB(iOS App 보안분석 도구) Select App 시 죽는 현상 해결 방법(iOS10, Error downloading file)

예전에 idb라는 iOS 분석도구를 공유드린적이 있습니다(https://www.hahwul.com/2018/02/hacking-ios-app-idb-ruby-gem-package.html)
최근에 테스트 시 Select App 시 앱 리스트를 가져오는 과정에서 죽는 현상이 있었느데요, 예전에 가까운곳에서 동일한 문제가 있었고 해결방법 공유해주셨던게 기억나서 저 또한 쉽게 해결헀네요.

iOS 10 이상의 디바이스에서 사용 시 발생하는 에러이고 겸사겸사 글로 남겨둡니다.

우선 앱 선택 시 idb가 죽을 때 로그를 보면 이렇습니다. 

Error downloading file.
/usr/local/lib/ruby/gems/2.3.0/gems/plist4r-1.2.2/lib/plist4r/plist.rb:294:in `open': No filename specified (RuntimeError)

ios에서 pc로 데이터를 가져오는 과정에서 plist4r gem 부근에 에러가 발생합니다. 

이유인즉슨 iOS 10부턴 LastLaunchServicesMap.plist를 사용하지 않는데, idb에선 해당 파일을 참조해서 App data를 읽어오려 하기 때문에 에러가 발생합니다.
(https://github.com/dmayer/idb/issues/91)

App data를 읽어오는 SQL Query를 조정하면 에러를 해결할 수 있습니다. (아니면, 별도로 분기 처리해줘야합니다. 코드 작성해서 pull 하시는것도 좋은 방법)

idb의 lib/lib 하위의 ios10_application_state_db_wrapper.rb 파일을 열어 코드를 수정합시다.

gems/ruby-2.4.2/gems/idb-2.10.3/lib/lib/ios10_application_state_db_wrapper.rb
(github: https://github.com/dmayer/idb/blob/master/lib/lib/ios10_application_state_db_wrapper.rb)

코드 내 sql query(SELECT문) 중 where 의 kvs.key=2 를 kvs.key=1로 변경합니다.

 def data_path_by_bundle_id(bundle_id)

    #puts @cache_path
    db = SQLite3::Database.open @cache_path
    #puts db.inspect

    #puts bundle_id
    plist = ""

    # kvs.key=2를 kvs.key=1로 변경합니다.
    # I fail to get prepared statements to work with SQLite... So using strig concatenation instead. here be dragons
    stmnt = db.prepare "SELECT kvs.value FROM application_identifier_tab left join kvs on application_identifier_tab.id = kvs.application_identifier where kvs.key = 2 and application_identifier_tab.application_identifier='#{bundle_id}'"
    # stmnt.bind_params(bundle_id)
    rs = stmnt.execute
    #
    #binding.pry
    # ... 생략 ...
 end

그러고 재 실행 후 다시 앱을 로드해보면 잘 됩니다 :)
Share: | Coffee Me:

9/15/2018

JSFuck XSS Payload 동작 원리

혹시 이런 XSS 코드 많이들 사용하시나요?
저 개인적으론 Js 코드 탈출 이후 특수문자~문자열 등 원하는 구문 삽입이 어려울 떄 종종 사용하는 방법입니다.

// alert(1)
this[(+{}+[])[+!![]]+(![]+[])[!+[]+!![]]+([][+[]]+[])[!+[]+!![]+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]](++[[]][+[]])

// alert(1)
this[(+{}+[])[-~[]]+(![]+[])[-~-~[]]+([][+[]]+[])[-~-~-~[]]+(!![]+[])[-~[]]+(!![]+[])[+[]]]((-~[]+[]))

필터링 규칙에 따라 페이로드를 숨기는 방법이 여러가지가 있지만 이 방법은 [ ] ( ) + ! 등으로만 코드를 구성할 수 있기 때문에 때에따라 요긴하게 사용되기도 합니다.

그냥 Js가 동작할 수 있는 하나의 구문이구나 하고 넘기고, 테스트할 때 사용하기만 했었느데 오늘은 어떻게 저런 코드가 동작할 수 있는 코드가 되었는지 정리해볼까 합니다.


What is JSFuck?

처음 제가 저 코드를 봤을때 생각났던게 바로 "아희"같다 라는 느낌이였습니다. (물론 실제로 아희로 코딩하진 않아요... 예전에 지인들끼리 신기한언어다 정도만 이야기하고 해본...)
자세한건 나뮈위키 보시죠..(https://namu.wiki/w/아희)

helloworld..
뱔뿌둬뱺쀠더빠뚜
터벚봃떠빠뷹붏뼤
나퍄따쀄븈뵳두받
붏타볻뚜벓탸볐밢
떠볽뻐뷦투희맣어

정말 난해한 언어지요? 이렇게 난해한 언어가 여러가지가 존재하며 쭉 이어져오고 있습니다.  JSFuck(아래부턴 JF라고 하겠습니다)도 이런 언어들 중 하나입니다.
Martin Kleppe가 만든 난해한 스타일 언어이며 별도의 컴파일러, 인터프리터 없이 Javascript engine 으로 동작 가능한 언어입니다.

알파벳 없이 아래 특수문자들로만 코드를 작성할 수 있고 각 문자나 기호를 저런식으로 표현할 수 있습니다.

<(,), [, ], +, !.
문자     JF
+            =>    (+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]])+[])[!+[]+!+[]]
.           =>    (+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]
0           =>    +[]
1           =>    +!![] or +!+[]
2           =>    !![]+!![] or !+[]+!+[]
3           =>    !![]+!![]+!![] or !+[]+!+[]+!+[]
4           =>    !![]+!![]+!![]+!![] or !+[]+!+[]+!+[]+!+[]
5           =>    !![]+!![]+!![]+!![]+!![] or !+[]+!+[]+!+[]+!+[]+!+[]
6           =>    !![]+!![]+!![]+!![]+!![]+!![] or !+[]+!+[]+!+[]+!+[]+!+[]+!+[]
7           =>    !![]+!![]+!![]+!![]+!![]+!![]+!![] or !+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]
8           =>    !![]+!![]+!![]+!![]+!![]+!![]+!![]+!![] or !+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]
9           =>    !![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![] or !+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]
a           =>    (![]+[])[+!+[]]
d           =>    ([][[]]+[])[!+[]+!+[]]
e           =>    (!![]+[])[!+[]+!+[]+!+[]]
f           =>    (![]+[])[+[]]
i           =>    ([![]]+[][[]])[+!+[]+[+[]]]
I           =>    (+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+(+!+[])+(+[])+(+[])+(+[]))+[])[+[]]
l           =>    (![]+[])[!+[]+!+[]]
N           =>    (+[![]]+[])[+[]]
n           =>    ([][[]]+[])[+!+[]]
r           =>    (!+[]+[])[+!+[]]
s           =>    (![]+[])[!+[]+!+[]+!+[]]
t           =>    (!!+[]+[])[+[]]
u           =>    ([][[]]+[])[+[]]
y           =>    (+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+(+!+[])+(+[])+(+[])+(+[]))])[+!+[]+[+[]]]

false       =>  ![]
true        =>  !![]
undefined   =>  [][[]]
NaN         =>  +[![]]
0           =>  +[]
1           =>  +!+[]
2           =>  !+[]+!+[]
10          =>  [+!+[]]+[+[]]
Array       =>  []
Number      =>  +[]
String      =>  []+[]
Boolean     =>  ![]
Function    =>  []["filter"]
eval        =>  []["filter"]["constructor"]( CODE )()
window      =>  []["filter"]["constructor"]("return this")()
이를 이용하면 위에서 보셨던 payload 구성이 가능해지는거죠. 이외 코드를 참조하시려면 아래  git 에서 확이하시면 편합니다. https://github.com/aemkei/jsfuck/blob/master/jsfuck.js

어떻게 동작하지?

가장 궁금증이 든 부분은 바로 이거입니다. Javascript에서 의도한 언어 포맷은 아닌데 어떻게 동작할 수 있을까입니다. 알고보니 생각보다 심플했는데,  JS  자체의 기능들을 이용해서 문자를 만들고 더해 Javascript 구문으로 사용하는 것이였습니다. 대표적인게, 괄호를 문자열로 바꾸는 방법입니다.
  []        +[] // "" - empty string
 +[]        +[] // "0"
  [][[]]    +[] // "undefined"
++[][[]]    +[] // "NaN
++[[]][+[]] +[] // "1"

10["toString"](36) // "a"
11["toString"](36) // "b"
...
34["toString"](36) // "y"
35["toString"](36) // "z"

  "undefined"          [  0] // "u"
[ "undefined"    ][  0][  0] // "u"
[  undefined +[] ][+[]][+[]] // "u"
[  [][+[]]   +[] ][+[]][+[]] // "u"  => 풀어서 보면 [  [][+[]]   +[] ] 의 [0][0] 값, 즉 u를 가져오도록..
숫자도 가능하겠지요
true >> false         // 1
true << true          // 2
true << true << true  // 4
타입은 이렇게 가능합니다. 이거 보니깐, alert 우회패턴들 생각나네요(이런 방식으로 만든)
0       ["constructor"] // Number
""      ["constructor"] // String
[]      ["constructor"] // Array
false   ["constructor"] // Boolean
[].find ["constructor"] // Function
이외에는 많은 방법들이 있으며 아래 링크들 참고하시면 도움됩니다.
https://github.com/aemkei/jsfuck
https://gitter.im/aemkei/jsfuck
https://ko.wikipedia.org/wiki/JSFuck

Share: | Coffee Me:

9/09/2018

XSS Polyglot Challenge(v2)에 참여하며 XSS에 대한 고민을 더 해봅시다!

polyglot이란 여러 환경? 에서도 동작하는 한줄짜리 강력한 테스팅 코드를 의미합니다. 저 또한 가끔씩 테스트할 때 쓰곤하는데, 아무튼 고민해보시고 만들어보시면 분명 좋은겁니다.


https://polyglot.innerht.ml/

XSS polyglot Challenge에 대해 들어보셨나요? XSS polyglot 코드로 서로 겨뤄보는(?) 챌린지인데 polyglot은 실무에서도 어느정도 유용하게 쓰일 수 있어 해보시는걸 추천드립니다.
겸사겸사 XSS 코드에 대해 감도 올리고, 자신을 돌아보는 계기도 되지요 :)

최근에 시작한건 아니지만, 최근에 v2로 리뉴얼되면서 다시 코드에 대해 고민해보게 되었지요.

룰은 이렇습니다.

    You will be given 20 common contexts in black-box
     # 0개 context에 대한 테스팅
    
    No DOM sinks or external libraries are involved
     # 외부~DOM 구간 없음

    Plain HTML injection with minimum filtering
    # HTML Injection 구간은 최소화된 필터링

    A headless Chrome will try your payload
     # 헤드리스 브라우저로 테스트함(phantomJS같은, 여기선 크롬으로)

    Your payload should run alert() in 2+ contexts
    # alert()로 테스트

    Payloads exceeding 1024 characters will always fail
     # 1024 글자 넘어가면 무조건 실패 

    Network is disabled
     # 네트워크 연결안됨

Example?

대략 이런 느낌의 코드입니다. (글쓰면서 대충 친거라 ... 아마 이거 올리면 등수에도 안들어갈 것 같네요)

alert()//'+alert()//"+alert()//></textarea> --><svg/onload=/**/alert()+'>'/*

저 구문이 ..

var a = '[input]'

<img src="[input]">

<img src='[input]'>

<!-- [input] -->

<textarea>[input]</textarea>

등등 많은 케이스에서 통과할 수 있도록 하는 코드이지요.

var a = 'alert()//'+alert()//"+alert()//></textarea> --><svg/onload=/**/alert()+'>'/*'

<img src="alert()//'+alert()//"+alert()//></textarea> --><svg/onload=/**/alert()+'>'/*">

<img src='alert()//'+alert()//"+alert()//></textarea> --><svg/onload=/**/alert()+'>'/*'>

<!-- alert()//'+alert()//"+alert()//></textarea> --><svg/onload=/**/alert()+'>'/* -->

<textarea>alert()//'+alert()//"+alert()//></textarea> --><svg/onload=/**/alert()+'>'/*</textarea>


평일때만해도 50 아래였는데, 별써 90대까지...

Share: | Coffee Me:

9/08/2018

p0wn-box - 가볍게 사용하기 좋은 모의해킹/침투테스트 툴 도커 이미지

최근에 Docker image 한번 제대로 날려먹은적이 있습니다. 테스트용 칼리....ㅜㅜ
(맥은 리눅스와 다르게 세팅을 다 안해놓은지라... 도커에 엄청 의존하고 있었죠)

아무튼 급히 툴 쓸일이 있어서 찾던 중 여러 보안툴 세팅해놓은 Docker project가 있어 공유드릴까 합니다.

dotdotpwn 사용 때문에(ssl 문제로 perl module 빌드에러...) 올려서 써봤는데, 가볍게 쓰기엔 나쁘지 않은 것 같네요.

p0wn-box 입니다.

p0wn-box

유명한 프로젝트는 아니지만, 필요한건 얼추 있습니다.
https://github.com/Nitr4x/p0wn-box

john~p0f, sqlmap, dotdotpwn 등등 대략 20개 정도 툴 세팅이 되어 있습니다.

* dirb
* john
* p0f
* patator
* dotdotpwn
* enum4linux
* dnsenum
* smtp-user-enum
* hydra
* wpscan
* snmpcheck
* wafw00f
* medusa
* hping3
* crunch
* setoolkit
* metasploit
* httrack
* SQLmap
* nmap
* SSLscan
* joomscan
* theharvester
* tcpdump
* openvpn
* nikto
* telnet
* proxychains
* htop
* DNS SOCKS Proxy

물론 별일 없으면 칼리 도커 이미지 쓰시는게 훨씬 편합니다. 다만 칼리 도커 이미지 아주 무겁습니다.
(그놈이 용량 떄문에 지우다가 날려먹었쬬..., https://www.hahwul.com/2018/08/docker-no-space-left-on-device-in-macos.html)

Docker build & Troubleshooting

다른 툴이랑 거의 비슷한데, 에러나는게 있어서 약간 수작업 필요합니다.

p0wn-box repo에서 클론받습니다.
#> git clone https://github.com/Nitr4x/p0wn-box
#> cd p0wn-box

해당 디렉토리 하위에 Dockerfile 있는거보니 바로 build 해줍시다.

다만, 바로하면 아래와 같이 에러날겁니다.
(아래부터 보고 진행해주세요.. build 중간에 실패하는거라 이미지 용량은 잡힙니다. 혹여나 실행해서 에러를 보셨다면 docker rmi로 쓸데없는 이미지만 지워주도록 합니다.)

원본 코드 패치되서 아마 바로 될겁니다. 혹시나 에러나면 아래 참고해주세요

#> docker build -t pwn .

에러발생
Err http://repo.kali.org kali-rolling/main Sources
  403  Forbidden
Err http://repo.kali.org kali-rolling/non-free Sources
  403  Forbidden
Err http://repo.kali.org kali-rolling/contrib Sources
  403  Forbidden
Err http://repo.kali.org kali-rolling/main amd64 Packages
  403  Forbidden
Err http://repo.kali.org kali-rolling/non-free amd64 Packages
  403  Forbidden
Err http://repo.kali.org kali-rolling/contrib amd64 Packages
  403  Forbidden

내용을 보면 kali쪽 Repo 주소가 403으로 떨어지는데, 이건 kali쪽 repo 주소 변경이 있어서 그렇습니다. 아직 반영안된 옛날 코드이지요.

그래서 그 부분만 수정해서 pull 하려했더니 이미 pull req가 있었네요.
https://github.com/Nitr4x/p0wn-box/pull/19

초안 써둘때만 해도 반영 안되었었느넫, 방금 확인해보니 접수 받은듯 합니다 !! (그럼 아래 내용을 볼 필요가 없다는 이야기..)



아무튼 내용은 내용이니 작성하겠습니당.

저 부분은 Dockerfile에서 apt source.list 파일을 추가해주고 있는데 그 부분 주소만 바꿔주면 해결됩니다.

[-] : 삭제
[+] : 추가

Docker file
# Adding Kali repository
[-] RUN echo 'deb http://repo.kali.org/kali kali-rolling main non-free contrib' >> /etc/apt/sources.list
[-] RUN echo 'deb-src http://repo.kali.org/kali kali-rolling main non-free contrib' >> /etc/apt/sources.list
[+] RUN echo 'deb http://http.kali.org/kali kali-rolling main contrib non-free' >> /etc/apt/sources.list
[+] RUN echo 'deb-src http://http.kali.org/kali kali-rolling main contrib non-free' >> /etc/apt/sources.list

RUN gpg --keyserver pgpkeys.mit.edu --recv-key ED444FF07D8D0BF6
RUN gpg -a --export ED444FF07D8D0BF6 | apt-key add -

수정하고 다시 빌드하면 잘 됩니다 :)

#> docker build -t pwn. 
#> docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
pwn                                                   latest              87164bb32fc4        20 seconds ago      2.48GB

이제 이미지를 올려봅시다.

#> docker run -td -p 0.0.0.0:9990-9999:9990-9999 -v ~/p0wnM3/:/tmp/data --name pwn pwn
9ee5fa668f345623fe16f53da6ab655ec09a984585ac02cbee4028b32e8cc601

ps로 컨테이너 id 확인하고, exec로 쉘로 진입합니다.

#> docker ps
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS              PORTS                                                                                                        NAMES
9ee5fa668f34        pwn                                                   "bash"                   15 seconds ago      Up 14 seconds       0.0.0.0

#> docker exec -it 9ee5fa668f34 /bin/bash

툴은 미리 다 깔려있으니 필요한거만 사용하시면 됩니다.

root@9ee5fa668f34:/tmp/data#
root@9ee5fa668f34:/tmp/data# ls /usr/sbin/ | grep "john\|dotdot\|hping\|p0f"
dmg2john
dotdotpwn
dotdotpwn.pl
gpg2john
hccap2john
hping3
john
keepass2john
keychain2john
keyring2john
kwallet2john
p0f
pfx2john
putty2john
pwsafe2john
racf2john
rar2john
ssh2john
zip2john

etc...
Share: | Coffee Me:

9/06/2018

Scala의 underscore(_)란?

요즘 자꾸 스칼라랑 부딫히게 되네요. 써본적도 없는 언어지만 다른 언어랑 비슷하거니(Js+Java느낌..) 하고 봤는데, 어마무시하게 가독성을 떨어뜨리는 무언가를 발견하였습니다.

_(Under bar)가 굉장히 많은 곳에 쓰이는데, 다들 의미가 좀 달라보여서 찾아보니 Underscore라고 불리는 문법(?) 중 하나였습니다.

Underscore에 대한 slideshare ppt 문서의 코드만 봐도 자꾸 _ 가 나타납니다..

class Underscores {
    import collection.{ Map => _ , _ }

    var count : Int = _

    def sum = (_:Int) + (_:Int)
    def sum2(a:Int)(b:Int) = a+b
    def offset = sum2(count) _

    def sizeOf(l:Traversable[_]) : Unit = l match {
        case it:Iterable[Int] => count = (0/:it)(_ + _)
        case s:Seq[_] => s.foreach( _ => count = count + 1)
        case _ => println(offset(l.size))
    }
}
(https://www.slideshare.net/normation/scala-dreaded 문서 내 코드 일부)

간략하게 정리 해볼겸 글 작성해봅니다.
(이걸 쓴다고 이해가될 것 같진 않네요.. 그냥 가끔씩 참고하는 정도만)

(_) Underscore?

Underscore(_)는 Scala에서 wildcard, ignore 등 여러가지 의미로 쓰입니다.

1. Existential types
def foo(l: List[Option[_]]) = ...

2. Higher kinded type parameters
case class A[K[_],T](a: K[T])

3. Ignored
이름없이 임의의 param, var, type 등으로 사용할 수 있습니다.

//Ignored variables
val _ = 5

// Ignored parameters
List(1, 2, 3) foreach { _ => println("Hi") }

// Ignored names of self types
trait MySeq { _: Seq[_] => }

4. Wildcard patterns, Wildcard imports
import , code 내 여러 부분에서 Wildcard(*)와 동일한 역할을 수행합니다.

import java.util._

Some(5) match { case Some(_) => println("Yes") }

5. Hiding imports
import 시 특정 헤더들은 제외해서 할 수 있습니다. 아래의 경우는 ArrayList 관련 헤더는 제외하고 로드합니다.

import java.util.{ArrayList => _, _}

6. Joining letters to punctuation
def bang_!(x: Int) = 5

7. Assignment operators
def foo_=(x: Int) { ... }

8. Placeholder syntax
List(1, 2, 3) map (_ + 2)
Partially applied functions
List(1, 2, 3) foreach println _

9. Converting call-by-name parameters to functions
def toFunction(callByName: => Int): () => Int = callByName _

등등..더 있는 것 같긴한데 찾아본바로는 이런 의미들로 쓰이는 것 같습니다. 스칼라를 통해서 개발할껀 아니지만, 코드단에서 취약점 찾으려면 이런 문법은 어느정도 숙지해둬야 편할 것 같네요..

Reference

https://www.slideshare.net/normation/scala-dreaded
https://charsyam.wordpress.com/2015/03/03/입-개발-scala의-거시기-_underscore-의-용법-정리/
Share: | Coffee Me:

9/01/2018

Burp Suite REST API(Burp 2.0 beta)

최근에  Burp suite 2.0 Beta 버전이 공개되었습니다. 혹여나 큰 변화가 있을까 공식 블로그랑 주변 반응?(기껏해야 트위터..) 좀 살펴본 이후 burp pro 2.0 으로 업그레이드 하였죠.

2.0의 여러가지 기능 중 가장 눈에 들어온 REST API에 대한 이야기를 잠깐 할까 합니다.

REST API of Burp suite 2.0

REST API를 지원해준다는 이야기는 곧 Burp suite가 분석툴로써만이 아닌 범용적인 스캐너~이를 활용한 도구로도 진화할 수 있다는 말입니다.
Burp suite의 REST API는 어떤것들을 지원하는지가 가장 궁금했습니다. 우선 현재 제공하는 기능을 보면 아래와 같습니다.

 - Scanning
 - Get Scan data
 - Get Rule(issues)

무엇을 만드냐에 따라 다르겠지만, 스캐너으로써 기능을 이용한다면 스캔할 수 있고, 정보를 가져올 수 있기 때문에 어느정도 사용이 가능합니다.

다만 테스트해보니 아직 모자란감이 여러가지가 있는데, 가장 심각한건 스캔 데이터를 가져올 때 결과 정보를 얻어올 수 없습니다.(현재 스캔 진행 상태 정도? 만 가능)

결국은 결과리포트를 재 활용할 수 있는게 아닌, 스캔을  REST로 쏘고 Burp에서 확인해야하는 상태인거죠.

다시 테스트해보니 결과정보도 가져올 수 있습니다. 다만 모든 결과(이슈)를 가져오진 못합니다. 나름대로 기준이나 GET요청 시 같이 전달하는 Param 차이에서 나타난 결과일 것 같네요.

[ 스캔등록 ]
POST /scan HTTP/1.1
Host: 127.0.0.1:1337

{
  "urls":["https://www.hahwul.com"]
}

Response로 Task_id를 받습니다
Tast Id는 Burp suite dashboard에서 보이는 task id 입니다.

[ 결과 가져오기]
GET /scan/[task_id]
Host: 127.0.0.1:1337

{
  "task_id": "3",
  "scan_status": "crawling",
  "scan_metrics": {
    "crawl_requests_made": 52,
    "crawl_requests_queued": 0,
    "audit_queue_items_completed": 0,
    "audit_queue_items_waiting": 0,
    "audit_requests_made": 0,
    "audit_network_errors": 0,
    "issue_events": 0
  },
  "message": "",
  "issue_events": []
}

How to use?

proxy options > REST API 항목이 있습니다. 기본 포트는 1337로 잡혀있고 Enable 시 바로 활성화됩니다. API-Key 기반 인증을 걸어서 접근제어를 할수도 있습니다.


Swagger UI 같은 테스팅 도구를 기본적으로 지원해주기 떄문에 1337 포트에서 바로 테스트도 할 수 있습니다. (그래봤자 insomnia나 swagger가 더 편한건 안비밀)

Conclusion

아직은 Beta 버전이라 기능도 미흡한 것 같습니다만, REST를 지원해준다는 점에선 참 맘에드는 업그레이드네요. (PostSwigger가 무슨 바람이 들었는지, 요 근래 변화를 자주 시도하는 것 같습니다)

지인들과도 이야기에서도 비슷한 의견으로 좁혀졌는데 결국은 추후에 API Spec이 좀 더 나오면 명확하게 무엇을 할 수 있을지 더 보일 것 같다는 이야기가 다수입니다. 그전까진 2.0의 새로운 기능들이나 즐겨야겠네요 :)

(대시보드도 생각보단 편한듯해요..)
Share: | Coffee Me:

Arachni optimizing for fast scanning (Arachni 스캔 속도 향상 시키기)

Arachni를 가지고 재미있는 것들을 하고있는데, 요즘 참 스캔 속도에 대해 고민이 되네요. Arachni 가 벤치 마킹 기준으로 굉장히 좋은 성능을 가지며 오픈소스이지만 결정적으로 어마어마한 스캔 시간이 발목을 잡는 것 같습니다.

처음에는 헤드리스 브라우저인 phantomjs를 전 테스팅 구간에 사용(아니 왜... 크롤링만 그걸로 하고 일반 스캐너처럼 해도 나쁘지 않을텐데)하기 떄문에 그런줄만 알았는데요, 찾아보디 몇가지 내용이 있어 더 공유드립니다.

Solution1 - Down scan performance

Arachni는 자체적으로 서버에 대한 스트레스 테스트를 진행합니다. 만약 스캔에서 발생하는 요청으로 인해 대상 서버가 느려지는 경우(응답 시간으로 판별) 자체적으로 스캔 쓰레드를 조정하거나 요청을 멈춰버립니다.
약한 서버에 돌렸을 때 스캔 시간이 아주 늘어지는 이유이기도 하죠.(또한 앞단에 보안 장비로 인해서 느려질수도 있겠네요)

대게 이런 경우는 단시간에 많은 요청이 발생하기 때문에 그렇습니다. 그래서 오히려 스캔 속도를 조정해주는게 총 스캔 시간에서 이득을 볼 수 있는 방법이라고 합니다.

스캔 시간에 직접 관여되는 것 중 가장 큰건 request-concurrency입니다. 동시에 얼마나 많은 양의 테스트를 할 수 있는지에 대한 항목인데, 오히려 갯수를 줄여서 스캔 퍼포먼스를 줄여서 서버의 스트레스를 낮춰 전체 스캔 시간에서 이득을 볼 수 있습니다. 물론 이 방법은 대상 서버가 스트레스를 받아서 Arachni의 자체적인 속도 타협으로 인해 스캔 시간이 늘어지는 걸 막을 때 사용합니다. (보통은 퍼포먼스가 더 줄겠죠)

Default: 20

command line
--http-request-concurrency=10

REST API
{
  "http-request-concurrency":"10",
   ....
}

Solution2 - 스캔 항목 타협

Arachni는 기본 옵션으로 모든 스캔 항목에 대해 테스트를 진행합니다. 가장 좋은 결과를 얻을 순 있지만, 스캔 속도에 막대한 영향을 끼칩니다.
조정이 가능하다면 적절히 타협봐서 사용하는게 속도를 늘리는 좋은 방법입니다.

Default: *

command line
-checks=*,-common_*,-backup_*,-backdoors

REST API
{
  "checks":"*,-xss,csrf"
}
다만 아쉬운점이 있다면 보편적인 스캐너 입장에선 뺄만한게 없습니다.
[ check list ]
 [*] session_fixation:
--------------------
Name:        Session fixation
Description:    
Checks whether or not the session cookie can be set to an arbitrary value.

Severity:    High
Elements:    form, link, link_template
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/session_fixation.rb

 [*] unvalidated_redirect:
--------------------
Name:        Unvalidated redirect
Description:    
Injects URLs and checks the `Location` HTTP response header field and/or browser
URL to determine whether the attack was successful.

Severity:    Medium
Elements:    link, form, cookie, header, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.5
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/unvalidated_redirect.rb

 [*] no_sql_injection:
--------------------
Name:        NoSQL Injection
Description:    
NoSQL injection check, uses known DB errors to identify vulnerabilities.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/no_sql_injection.rb

 [*] xss_path:
--------------------
Name:        XSS in path
Description:    
Cross-Site Scripting check for path injection

Severity:    High
Elements:    path
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.11
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/xss_path.rb

 [*] xss_event:
--------------------
Name:        XSS in HTML element event attribute
Description:    
Cross-Site Scripting in event tag of HTML element.

Severity:    High
Elements:    form, link, cookie, header
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.9
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/xss_event.rb

 [*] code_injection_timing:
--------------------
Name:        Code injection (timing)
Description:    
Injects code snippets and assess whether or not the injection was successful using
a time delay.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.3.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/code_injection_timing.rb

 [*] xss_dom:
--------------------
Name:        DOM XSS
Description:    
Injects an HTML element into page DOM inputs and then parses the HTML markup of
tainted responses to look for proof of vulnerability.

Severity:    High
Elements:    link_dom, form_dom, cookie_dom, link_template_dom, ui_input_dom, ui_form_dom
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.4
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/xss_dom.rb

 [*] xss_tag:
--------------------
Name:        XSS in HTML tag
Description:    
Cross-Site Scripting in HTML tag.

Severity:    High
Elements:    form, link, cookie, header
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.11
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/xss_tag.rb

 [*] csrf:
--------------------
Name:        CSRF
Description:    
It uses differential analysis to determine which forms affect business logic and
checks them for lack of anti-CSRF tokens.

(Works best with a valid session.)

Severity:    High
Elements:    form
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.4
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/csrf.rb

 [*] sql_injection_timing:
--------------------
Name:        Blind SQL injection (timing attack)
Description:    
Blind SQL Injection check using timing attacks.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.3.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/sql_injection_timing.rb

 [*] source_code_disclosure:
--------------------
Name:        Source code disclosure
Description:    
It tries to identify whether or not the web application can be forced to reveal
source code.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.4
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/source_code_disclosure.rb

 [*] xpath_injection:
--------------------
Name:        XPath Injection
Description:    
XPath injection check

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.6
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/xpath_injection.rb

 [*] xss_dom_script_context:
--------------------
Name:        DOM XSS in script context
Description:    
Injects JS taint code and checks to see if it gets executed as proof of vulnerability.

Severity:    High
Elements:    link_dom, form_dom, cookie_dom, link_template_dom, ui_input_dom, ui_form_dom
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/xss_dom_script_context.rb

 [*] os_cmd_injection:
--------------------
Name:        OS command injection
Description:    
Tries to find Operating System command injections.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.6
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/os_cmd_injection.rb

 [*] os_cmd_injection_timing:
--------------------
Name:        OS command injection (timing)
Description:    
Tries to find operating system command injections using timing attacks.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.3.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/os_cmd_injection_timing.rb

 [*] rfi:
--------------------
Name:        Remote File Inclusion
Description:    
Injects a remote URL in all available inputs and checks for relevant content in
the HTTP response body.

Severity:    High
Elements:    link, form, cookie, header, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.3.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/rfi.rb

 [*] response_splitting:
--------------------
Name:        Response Splitting
Description:    
Injects arbitrary and checks if any of them end up in the response header.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/response_splitting.rb

 [*] xss_script_context:
--------------------
Name:        XSS in script context
Description:    
Injects JS taint code and check to see if it gets executed as proof of vulnerability.

Severity:    High
Elements:    form, link, cookie, header, link_template
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.5
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/xss_script_context.rb

 [*] xss:
--------------------
Name:        XSS
Description:    
Injects an HTML element into page inputs and then parses the HTML markup of
tainted responses to look for proof of vulnerability.

Severity:    High
Elements:    form, link, cookie, header, link_template
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.4.9
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/xss.rb

 [*] xxe:
--------------------
Name:        XML External Entity
Description:    
Injects a custom External Entity into XML documents prior to submitting them and
determines the existence of a vulnerability by checking whether that entity was
processed based on the resulting HTTP response.

Severity:    High
Elements:    xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/xxe.rb

 [*] no_sql_injection_differential:
--------------------
Name:        Blind NoSQL Injection (differential analysis)
Description:    
It uses differential analysis to determine how different inputs affect the behavior
of the web application and checks if the displayed behavior is consistent with
that of a vulnerable application.

Severity:    High
Elements:    link, form, cookie
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/no_sql_injection_differential.rb

 [*] file_inclusion:
--------------------
Name:        File Inclusion
Description:    
Injects paths of common files (like `/etc/passwd` and `boot.ini`) and evaluates
the existence of a file inclusion vulnerability based on the presence of relevant
content or errors in the HTTP response body.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.7
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/file_inclusion.rb

 [*] code_injection_php_input_wrapper:
--------------------
Name:        Code injection (php://input wrapper)
Description:    
Injects PHP code into the HTTP request body and uses the `php://input` wrapper
to try and load it.

Severity:    High
Elements:    form, link, cookie, header
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/code_injection_php_input_wrapper.rb

 [*] sql_injection_differential:
--------------------
Name:        Blind SQL Injection (differential analysis)
Description:    
It uses differential analysis to determine how different inputs affect behavior
of the web application and checks if the displayed behavior is consistent with
that of a vulnerable application.

Severity:    High
Elements:    link, form, cookie
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.4.4
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/sql_injection_differential.rb

 [*] path_traversal:
--------------------
Name:        Path Traversal
Description:    
It injects paths of common files ( like `/etc/passwd` and `boot.ini`) and
evaluates the existence of a path traversal vulnerability based on the presence
of relevant content in the HTML responses.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.4.8
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/path_traversal.rb

 [*] unvalidated_redirect_dom:
--------------------
Name:        Unvalidated DOM redirect
Description:    
Injects URLs and checks the browser URL to determine whether the attack was successful.

Severity:    High
Elements:    link_dom, form_dom, cookie_dom, ui_form_dom
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/unvalidated_redirect_dom.rb

 [*] sql_injection:
--------------------
Name:        SQL Injection
Description:    
SQL injection check, uses known SQL DB errors to identify vulnerabilities.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/sql_injection.rb

 [*] code_injection:
--------------------
Name:        Code injection
Description:    
Injects code snippets and assess whether or not execution was successful.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.5
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/code_injection.rb

 [*] ldap_injection:
--------------------
Name:        LDAPInjection
Description:    
It tries to force the web application to return LDAP error messages, in order to
discover failures in user input validation.

Severity:    High
Elements:    link, form, cookie, header, link_template, json, xml
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.4
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/ldap_injection.rb

 [*] trainer:
--------------------
Name:        Trainer
Description:    
Pokes and probes all inputs of a given page in order to uncover new input vectors.
It also forces Arachni to train itself by analyzing the server responses.

Elements:    form, link, cookie, header
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.5
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/active/trainer.rb

 [*] password_autocomplete:
--------------------
Name:        Password field with auto-complete
Description:    
Greps pages for forms which have password fields
                without explicitly disabling auto-complete.

Severity:    Low
Elements:    form
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.3.1
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/password_autocomplete.rb

 [*] cookie_set_for_parent_domain:
--------------------
Name:        Cookie set for parent domain
Description:    
Logs cookies that are accessible by all subdomains.

Severity:    Informational
Elements:    cookie
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/cookie_set_for_parent_domain.rb

 [*] mixed_resource:
--------------------
Name:        Mixed Resource
Description:    
Looks for resources served over HTTP when the HTML code is server over HTTPS.

Severity:    Medium
Elements:    body
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.5
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/mixed_resource.rb

 [*] private_ip:
--------------------
Name:        Private IP address finder
Description:    
Scans pages for private IP addresses.

Severity:    Low
Elements:    body, header
Author:        Tasos Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/private_ip.rb

 [*] insecure_cors_policy:
--------------------
Name:        Insecure CORS policy
Description:    
Checks the host for a wildcard (`*`) `Access-Control-Allow-Origin` header.

Severity:    Low
Elements:    server
Author:        Tasos Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.1
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/insecure_cors_policy.rb

 [*] hsts:
--------------------
Name:        HTTP Strict Transport Security
Description:    
Checks HTTPS pages for missing `Strict-Transport-Security` headers.

Severity:    Medium
Elements:    server
Author:        Tasos Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/hsts.rb

 [*] form_upload:
--------------------
Name:        Form-based File Upload
Description:    
Logs upload forms which require manual testing.

Severity:    Informational
Elements:    form
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/form_upload.rb

 [*] http_only_cookies:
--------------------
Name:        HttpOnly cookies
Description:    
Logs cookies that are accessible via JavaScript.

Severity:    Informational
Elements:    cookie
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.5
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/http_only_cookies.rb

 [*] insecure_cookies:
--------------------
Name:        Insecure cookies
Description:    
Logs cookies that are served over an encrypted channel but without having the
`secure` flag set.

Severity:    Informational
Elements:    cookie
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.5
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/insecure_cookies.rb

 [*] x_frame_options:
--------------------
Name:        Missing X-Frame-Options header
Description:    
Checks the host for a missing `X-Frame-Options` header.

Severity:    Low
Elements:    server
Author:        Tasos Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/x_frame_options.rb

 [*] cvs_svn_users:
--------------------
Name:        CVS/SVN users
Description:    
Scans every page for CVS/SVN users.

Severity:    Low
Elements:    body
Author:        Tasos Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.3.1
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/cvs_svn_users.rb

 [*] unencrypted_password_forms:
--------------------
Name:        Unencrypted password forms
Description:    
Looks for password inputs that don't submit data
                over an encrypted channel (HTTPS).

Severity:    Medium
Elements:    form
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/unencrypted_password_forms.rb

 [*] html_objects:
--------------------
Name:        HTML objects
Description:    
Logs the existence of HTML object tags.
                Since Arachni can't execute things like Java Applets and Flash
                this serves as a heads-up to the penetration tester to review
                the objects in question using a different method.

Severity:    Informational
Elements:    body
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.4
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/html_objects.rb

 [*] ssn:
--------------------
Name:        SSN
Description:    
Greps pages for disclosed US Social Security Numbers.

Severity:    High
Elements:    body
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>, haliphax
Version:    0.1.4
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/ssn.rb

 [*] emails:
--------------------
Name:        E-mail address
Description:    
Greps pages for disclosed e-mail addresses.

Severity:    Informational
Elements:    body
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/emails.rb

 [*] credit_card:
--------------------
Name:        Credit card number disclosure
Description:    
Scans pages for credit card numbers.

Severity:    Medium
Elements:    body
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.4
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/credit_card.rb

 [*] captcha:
--------------------
Name:        CAPTCHA
Description:    
Greps pages for forms with CAPTCHAs.

Severity:    Informational
Elements:    form
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/grep/captcha.rb

 [*] backdoors:
--------------------
Name:        Backdoors
Description:    
Tries to find common backdoors on the server.

Severity:    High
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.6
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/backdoors.rb

 [*] allowed_methods:
--------------------
Name:        Allowed methods
Description:    
Checks for supported HTTP methods.

Severity:    Informational
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/allowed_methods.rb

 [*] htaccess_limit:
--------------------
Name:        .htaccess LIMIT misconfiguration
Description:    
Checks for misconfiguration in LIMIT directives that blocks
                GET requests but allows POST.

Severity:    High
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.7
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/htaccess_limit.rb

 [*] xst:
--------------------
Name:        XST
Description:    
Sends an HTTP TRACE request and checks if it succeeded.

Severity:    Medium
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.8
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/xst.rb

 [*] directory_listing:
--------------------
Name:        Directory listing
Description:    
Tries to force directory listings.

Severity:    Low
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.7
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/directory_listing.rb

 [*] http_put:
--------------------
Name:        HTTP PUT
Description:    
Checks if uploading files is possible using the HTTP PUT method.

Severity:    High
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/http_put.rb

 [*] insecure_client_access_policy:
--------------------
Name:        Insecure client-access policy
Description:    
Checks `clientaccesspolicy.xml` files for wildcard domain policies.

Severity:    Low
Elements:    server
Author:        Tasos Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/insecure_client_access_policy.rb

 [*] webdav:
--------------------
Name:        WebDAV
Description:    
Checks for WebDAV enabled directories.

Severity:    Informational
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.5
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/webdav.rb

 [*] common_files:
--------------------
Name:        Common files
Description:    
Tries to find common sensitive files on the server.

Severity:    Low
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.4
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/common_files.rb

 [*] insecure_cross_domain_policy_headers:
--------------------
Name:        Insecure cross-domain policy (allow-http-request-headers-from)
Description:    
Checks `crossdomain.xml` files for wildcard `allow-http-request-headers-from` policies.

Severity:    Low
Elements:    server
Author:        Tasos Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/insecure_cross_domain_policy_headers.rb

 [*] localstart_asp:
--------------------
Name:        localstart.asp
Description:    
Checks for localstart.asp.

Severity:    Low
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/localstart_asp.rb

 [*] interesting_responses:
--------------------
Name:        Interesting responses
Description:    
Logs all non 200 (OK) server responses.

Severity:    Informational
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.1
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/interesting_responses.rb

 [*] backup_directories:
--------------------
Name:        Backup directories
Description:    
Tries to find backed-up directories.

Severity:    Medium
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/backup_directories.rb

 [*] origin_spoof_access_restriction_bypass:
--------------------
Name:        Origin Spoof Access Restriction Bypass
Description:    
Retries denied requests with a spoofed origin header
                to trick the web application into thinking that the request originated
                from localhost and checks whether the restrictions was bypassed.

Severity:    High
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/origin_spoof_access_restriction_bypass.rb

 [*] common_admin_interfaces:
--------------------
Name:        Common administration interfaces
Description:    
Tries to find common admin interfaces on the server.

Severity:    Low
Elements:    server
Author:        Brendan Coles <bcoles@gmail.com>, Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1.1
References:
 [~] Apache.org        http://httpd.apache.org/docs/2.0/mod/mod_access.html
 [~] WASC        http://projects.webappsec.org/w/page/13246953/Predictable%20Resource%20Location
Targets:
 [~] Generic
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/common_admin_interfaces.rb

 [*] common_directories:
--------------------
Name:        Common directories
Description:    
Tries to find common directories on the server.

Severity:    Medium
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.2.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/common_directories.rb

 [*] backup_files:
--------------------
Name:        Backup files
Description:    
Tries to identify backup files.

Severity:    Medium
Elements:    server
Author:        Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.3.3
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/backup_files.rb

 [*] insecure_cross_domain_policy_access:
--------------------
Name:        Insecure cross-domain policy (allow-access-from)
Description:    
Checks `crossdomain.xml` files for `allow-access-from` wildcard policies.

Severity:    Low
Elements:    server
Author:        Tasos Laskos <tasos.laskos@arachni-scanner.com>
Version:    0.1
Path:    /home/hahwul/HAHWUL/tool/arachni/arachni-1.5.1-0.5.12/system/gems/gems/arachni-1.5.1/components/checks/passive/insecure_cross_domain_policy_access.rb

Solution3 - phantomjs(Browser cluster), 자잘한 옵션 조정

위에서 가장 먼저 이야기드렸지만, 헤드리스 브라우저를 이용해서 Request/Response 테스트를 진행하기 때문에 다르 스캐너보다 느릴 수 밖에 없습니다.

따지고 보면 가상의 브라우저가 각 웹 페이지를 랜더링 하면서 테스트한다고 생각하면 되니 당연한 결과겠지요.

가장 현실적인 대안인데요, 전체적인 스캔 퍼포먼스를 조절하는게 아닌 테스팅을 하는 각 모듈에 대한 항목을 조정하는 방법이 있습니다.

Browser cluster 관련 항목쪽은 헤드리스 브라우저에서 테스트하는 옵션을 조정할 수 있어 브라우저의 갯수를 늘리고 분석 Detph를 낮추면 속도면에서 많이 타협볼 수 있을 것 같습니다.

그리고.. 이외에도 redirection 갯수, timtout 시간 등을 조정해서 속도를 좀 더 빠르게 떙겨볼 수 있습니다.


Reference

http://support.arachni-scanner.com/kb/general-use/optimizing-for-faster-scans
Share: | Coffee Me: